{Access} supprimé des enregistrements

Résolu
hutchy33 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Voilà j'ai un souci avec une table de ma base de données: ma table comporte 14 champs dont un appelé "phone".
Je dois sortir de cette table tous les enregistrements dont le champs "phone" n'a pas 10 chiffres, ou ne commence pas par 01,02,03,04,05. Donc au final je dois bien avoir ma table avec mes 14 champs mais dont les enregistrements avec un mauvais numéro supprimés. Voilà se que j'ai essayé d'utilisé, mais dois-je faire ça et rajouté mes 14 champs à la suite? Non il doit y avoir plus simple quand même!!! Quelqu'un peut-il m'aider please?

SELECT Table1.N°, Table1.nom, Table1.phone, .......
FROM Table1
WHERE
(
(
(Table1.phone) like "0[1-9]########"
)
);

20 réponses

CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51
 
Bonjour,

DELETE FROM Table1 WHERE Table1.phone NOT IN(
SELECT Table1.phone
FROM Table1
WHERE (Table1.phone) LIKE "0[1-9]########");

Essaie ça ;)
0
blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
Salut,

ça m'étonnerait qu'access autorise les expressions régulières dans un LIKE.
0
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51
 
Peut être pas directement via la gestion des requêtes mais plutôt via le Vba ;)
0
blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
pas d'expressions régulières en VBA de manière simple...
0
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51 > blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention  
 
Faut croire que si?

Ca a fonctionné ;)
0
blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361 > CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention  
 
ben voui, chez moi, ça le fait pas, mais c'est peut-être à cause d'une vieille version d'access...
0
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51 > blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention  
 
C'est possible je ne sais pas.

Access 2000?
0
hutchy33 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
c'est cool ça marche bien merci, mais sur chaque ligne de la table qui a été supprimé, il y a maintenant écrit supprimé à chaque champs. Comme enlever ça please? Et petite question subsidiaire, chaque enregistrement que je supprime de cette table je voudrai les renseigné dans un fichier excel de façon automatique, c à d que dans le code VBA il faudrait rajouté une ligne pour qu'une fois la suppression faite de la table, je récupère les enregistrements pour les mettre dans un fichier Excel. Merci pour votre aide c'est très important.
0
blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
Il te suffit de fermer la fenêtre d'affichage de ta table et de la réouvrir, la zone réapparaitra à blanc.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51
 
Pour ce qui est de "supprimé" à chaque ligne je ne vois pas trop pourquoi il te fait ça.

Concernant ta question subsidiaire tu peux effectivement enregistrer tes données supprimées dans un fichier Excel en utilisant du code VBA. Je n'ai pas de base de données Access là donc je ne peux pas te guider.

Tu peux retrouver des exemples comme ici : https://cafeine.developpez.com/access/tutoriel/excel/#LVII
mais c'est assez compliqué.

Par contre je pourrais te suggérer de les enregistrer dans une autre table à part, en faisant un INSERT INTO ( SELECT....) de l'autre table avant le DELETE.
Puis après pourquoi pas exporter la table dans un fichier Excel ou encore la synchroniser avec ce dit fichier :)
0
hutchy33 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Capit,
Effectivement j'ai lu le tutoriel que tu m'as proposé, c'est bien compliqué. La deuxième solution que tu me propose me parrait très bien, surtout si on peut faire une synchronisation entre Table et fichier Excel. Sauf que je suis vraiment débutant en VB et je ne sais pas koi mettre après ton INSERT INTO (SELECT....). Je sais ke tu n'as pas de base dispo avec toi mais en mettant des termes générique tu peux peut etre me guidé un peu plus.
Vraiment je te remercie beaucoup, tu vas me sauver et me faire gagné bcp de temps.
0
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51
 
Tout d'abord comment s'exécute ta requête DELETE?
C'est en cliquant sur un bouton de ton formulaire?
Si oui, c'est fait via du VBA (je pense) donc fait moi un copier/coller du code concerné.
Si non explique moi en détail comment la requête DELETE est appellée/utilisée ;)
0
hutchy33 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
pour l'instant c'est une requête que j'utilise en double clicke dessus, par la suite il faudra que j'automatise un certain nombre de taches à l'aide d'un "module". Mais pour l'instant je veux comprendre chaque taches donc je fais tout en manuel. Voici le code qui est pour l'instant en place:
DELETE *
FROM Import
WHERE Import.phone NOT IN(
SELECT Import.phone
FROM Import
WHERE (Import.phone) LIKE "0[1-9]########");

ceci est donc le début du code, là ou je supprime les enregistrements dont le champ "phone" n'est pas utilisable, mais je voudrai que ces enregistrements soient renseignés dans un fichier Excel.
0
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51
 
Dans ce cas là dans la même requête SQL tu mets :

INSERT INTO NouvelleTable (
SELECT *
FROM Import
WHERE Import.phone NOT IN(
SELECT Import.phone
FROM Import
WHERE (Import.phone) LIKE "0[1-9]########"));

DELETE *
FROM Import
WHERE Import.phone NOT IN(
SELECT Import.phone
FROM Import
WHERE (Import.phone) LIKE "0[1-9]########");

Comm d'hab, j'ai pas testé donc c'est peut être faux ;)
0
hutchy33 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai comme retour: erreur de syntaxe dans l'instruction INSERT INTO
0
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51
 
T'as bien créer la nouvelle table ou les valeurs vont s'enregistrer? Avec exactement les même nom de champs que l'autre. Seul le nom de la nouvelle table est à changer.
De plus faut que tu remplace "NouvelleTable" dans le INSERT INTO par le nouveau nom ;)
0
hutchy33 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
à ok la requète ne peut pas créer d'elle-même cette nouvelle table en récupérant tous les champs de la table Import?
0
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51
 
Non, enfin si mais ça voudrait dire qu'a chaque exécution de la dit requête, ta table est recréée.
Et j'imagine que ce n'est pas ça que tu souhaites.
Donc créer ta table manuellement (tu fais un copier/coller de l'autre en changeant de nom et tu la vide).
0
hutchy33 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Bon c'est fait mais j'ai eu le meme résultat soit : erreur de syntaxe dans l'instruction INSERT INTO
J'ai cherché un peu dans des tuto sur SQL et j'ai remarqué que certain mettent des guillemet avant le nom de la table après INSERT INTO et là j'ai ça comme erreur: Erreur de syntaxe dans la requête. La clause de la requête est incomplète.
Je vois pas d'où est le souci mais je suis sur que tu es pas loin.
0
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51
 
Non normalement la syntaxe de ma requête est correcte.

Essaies de mettre la requête INSERT dans une autre requête Access, histoire de séparer les 2.
Par contre il faudra que tu doubles clique sur la requête 1 et ensuite la requête 2 et tu auras ce que tu cherches.
0
hutchy33 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
ben non j'ai tjrs la meme erreur de syntaxe!! snif!!
0
blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
Je ne mettrais pas de parenthèses avant le select...
INSERT INTO NouvelleTable SELECT *
FROM Import
WHERE Import.phone NOT IN(
SELECT Import.phone
FROM Import
WHERE (Import.phone) LIKE "0[1-9]########"); 
--

A+ Blux           
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
hutchy33 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Punaise Blux merci c t juste cette histoire de parenthèses!!!! c boules!
Bon ben la suite maintenant c'est d'exporté cette table vers un fichier Excel mais en plus que ce fichier soit en synchro avec la table. Tous ça biensur c'est le code sql qui me faudrait.
Merci bcp encore une fois, j'ai cru ne jamais m'en sortir.
0
blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
Tu peux exporter vers EXCEL, mais ça ne sera qu'une exportation à un instant 't'.

Si tu veux que les données soient mises à jour dans EXCEL il faut faire un lien entre EXCEL et ACCESS.

Sous EXCEL : Menu Données/Données externes/créer une requête...
0
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51
 
Arf, hallucine que mon erreur vienne d'une histoire de parenthèse. En tout cas c'est cool si cela fonctionne.

Bonne chance pour la suite.
0