{Access} supprimé des enregistrements

Résolu/Fermé
hutchy33 Messages postés 15 Date d'inscription mardi 7 août 2007 Statut Membre Dernière intervention 1 mars 2012 - 1 sept. 2009 à 13:06
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 - 2 sept. 2009 à 11:31
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
1 sept. 2009 à 14:53
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 26008 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
1 sept. 2009 à 14:55
Salut,

ça m'étonnerait qu'access autorise les expressions régulières dans un LIKE.
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
1 sept. 2009 à 14:59
Peut être pas directement via la gestion des requêtes mais plutôt via le Vba ;)
0
blux Messages postés 26008 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
1 sept. 2009 à 15:22
pas d'expressions régulières en VBA de manière simple...
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51 > blux Messages postés 26008 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024
1 sept. 2009 à 15:45
Faut croire que si?

Ca a fonctionné ;)
0
blux Messages postés 26008 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289 > CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010
1 sept. 2009 à 15:49
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51 > blux Messages postés 26008 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024
1 sept. 2009 à 15:51
C'est possible je ne sais pas.

Access 2000?
0
hutchy33 Messages postés 15 Date d'inscription mardi 7 août 2007 Statut Membre Dernière intervention 1 mars 2012
1 sept. 2009 à 15:23
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 26008 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
1 sept. 2009 à 15:44
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
1 sept. 2009 à 15:38
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 mardi 7 août 2007 Statut Membre Dernière intervention 1 mars 2012
1 sept. 2009 à 15:56
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
1 sept. 2009 à 16:02
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 mardi 7 août 2007 Statut Membre Dernière intervention 1 mars 2012
1 sept. 2009 à 16:29
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
1 sept. 2009 à 16:39
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 mardi 7 août 2007 Statut Membre Dernière intervention 1 mars 2012
1 sept. 2009 à 16:48
j'ai comme retour: erreur de syntaxe dans l'instruction INSERT INTO
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
1 sept. 2009 à 16:52
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 mardi 7 août 2007 Statut Membre Dernière intervention 1 mars 2012
1 sept. 2009 à 16:59
à 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 lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
1 sept. 2009 à 17:02
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 mardi 7 août 2007 Statut Membre Dernière intervention 1 mars 2012
1 sept. 2009 à 17:16
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
1 sept. 2009 à 17:24
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 mardi 7 août 2007 Statut Membre Dernière intervention 1 mars 2012
1 sept. 2009 à 17:37
ben non j'ai tjrs la meme erreur de syntaxe!! snif!!
0
blux Messages postés 26008 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
2 sept. 2009 à 08:24
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 mardi 7 août 2007 Statut Membre Dernière intervention 1 mars 2012
2 sept. 2009 à 11:22
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 26008 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
2 sept. 2009 à 11:30
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
2 sept. 2009 à 11:31
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