Access : suppression d'enregistrements

Résolu/Fermé
Brice - 30 nov. 2010 à 16:46
 Maxime - 30 nov. 2010 à 21:42
Bonjour à tous,

J'ai un problème de taille auquel j'espère trouvé une solution...avec votre collaboration à tous biensûre.

Je m'explique, j'ai une base de données sous ACCESS qui contient 2 tables :

Tb_client et mot_cles

La table Tb_client possède plusieurs champs concernant mes clients (Id, Nom, adresse, mail, etc...).

La table mot_cles possède 2 champs (Id, mot_cles) qui sont des mots clés.

J'ai effectué avec l'aide de quelqu'un une requête qui me permet de dire "Si tu trouves tel mot-clé (de la table mot-clés) dans les enregistrements de la table Tb_client, merci de me les afficher, voici la requête en sql :

SELECT Tb_client.ID, mot_cles.Champ1, Tb_client.Champ29, Tb_client.Champ3, Tb_client.Champ4
FROM Tb_client, mot_cles
WHERE (((InStr([Tb_client].[Champ29],[mot_cles].[Champ1]))<>False)) OR (((InStr([Tb_client].[champ3],[mot_cles].[Champ1]))<>False)) OR (((InStr([Tb_client].[champ4],[mot_cles].[Champ1]))<>False));

Cette requête fonctionne à merveille pour ce qui est de m'afficher les lignes d'enregistrement qui contiennent les mots-clés définis dans la table mot_clés.

MON PROBLÈME est que je souhaite supprimer ces enregistrements après les avoir afficher, toujours à l'aide d'une requête. Je pense donc que je dois utiliser les résultats de ma 1ère requête mais je bute totalement. J'ai bien cherché mais je bloque.


Merci de votre aide.

Le savoir n'est rien s'il n'est pas partagé. ;-)

3 réponses

Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
30 nov. 2010 à 18:19
Bonjour Brice,

Voici une piste, mais ce n'est qu'une piste ..... Construite à partir de copier/coller ...
Je vous confie la finition .... [Ne pas oublier les sauvegardes avant de procéder à des essais .....].


DoCmd.RunSQL "DELETE FROM Tb_client, mot_cles
WHERE (((InStr([Tb_client].[Champ29],[mot_cles].[Champ1]))<>False)) OR (((InStr([Tb_client].[champ3],[mot_cles].[Champ1]))<>False)) OR (((InStr([Tb_client].[champ4],[mot_cles].[Champ1]))<>False));"

Cordialement
0
Salut Jean_Jacques,

Merci de ta réponse. Hélas ça ne fonctionne pas.

Access ouvre une boîte de dialogue : Spécifiez la table contenant les enregistrements que vous voulez supprimer.

Je galère grave. Je peux te faire suivre le fichier si ça peut "t'aider".

Merci.
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
30 nov. 2010 à 21:23
Bonsoir,
En fait, ce message est un bon signe ; il indique qu' une information manque ou qu'une instruction ne respecte pas les conventions SQL et interdit que la commande soit exécutée.....
Si la BDD est sous la version ACCESS 2000, je peux la manipuler. Il faut d'abord la déposer sur le site ci-joint.com après l'avoir compressée et me communiquer ensuite le lien de téléchargement fourni.

Sinon, il vaut mieux déposer une nouvelle fiche comportant le code récalcitrant afin qu'il puisse être débogué par un intervenant disposant de la bonne version ACCESS.
Cordialement
0
Je viens tous juste de trouver une solution, merci de ta participation c'est gentil voici ma requête :

DELETE * FROM Tb_client WHERE Tb_client.ID IN (SELECT Tb_client.ID FROM Tb_client, mot_cles
WHERE (((InStr(Tb_client.Champ29,mot_cles.Champ1))<>False)) Or (((InStr(Tb_client.champ3,mot_cles.Champ1))<>False)) Or (((InStr(Tb_client.champ4,mot_cles.Champ1))<>False)));

Je vais allé manger ça ma donner faim tous ça ;-)
0
Autremaing...

delete * from table1 inner join on blabla WHERE

Et tu n'oublies pas le WHERE, sinon ça fait très mal.

l'étoile après le DELETE c'est pour ACCESS. En MySql ou MsSql, tu mets rien...
0