Bonjour à tous...
Je me tourne vers vous car je bloque sur un cas un peu particulier !!!
J'ai X Tables dans ma database, sur ces tables je supprime déjà X champs grâce à l'excellent tutos de Tofalu sur tout ce qui concerne DAO. Pour ce faire j'ai crée une tblChampASupprimer dans laquelle j'ai 2 champs : [TableSource] et [Champ], rien de bien compliqué je boulcue sur cette table et supprime donc les champs.
Par contre maintenant j'aimerais supprimer des enregistrements sur ces tables selon des conditions...en bouclant bien sur sur une table qui donne les élements...
En brut cela donneraisVous comprendrez bien que ce n'est pas raisonnable ;-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Set oRst = oDB.OpenRecordset("SELECT * FROM tbl1 WHERE champ1=0") While Not oRst.EOF 'Supprime l'enregistrement oRst.Delete 'Passe au suivant oRst.MoveNext Wend Set oRst = oDB.OpenRecordset("SELECT * FROM tbl2 WHERE champ2=0") While Not oRst.EOF 'Supprime l'enregistrement oRst.Delete 'Passe au suivant oRst.MoveNext Wend Set oRst = oDB.OpenRecordset("SELECT * FROM tbl6 WHERE champ4=Null") While Not oRst.EOF 'Supprime l'enregistrement oRst.Delete 'Passe au suivant oRst.MoveNext Wend ...
L'idée serait donc de boucler sur une Table où j'aurais 3 champs : [Table], [Champ] et [Condition] par exemple et une idée du code serait :
Mais là où ça me fait peur c'est sur l'imbrication des Set oRst, je le définis une 1ère fois pour dire où trouver les éléments servant à la boucle et je le définis de suite derrière pour lui dire quls enregistrements supprimer dans la table concerné !!! Ca risque de ne pas marcher !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Set oRst = oDB.OpenRecordset("tblEnregistrementASupprimer", dbOpenTable) With oRst While Not .EOF Set oRst = oDB.OpenRecordset("SELECT * FROM " & oRst![Table] & " WHERE " & oRst![Champ] &" =" & oRst![Condition]) While Not oRst.EOF 'Supprime l'enregistrement oRst.Delete 'Passe au suivant oRst.MoveNext Wend .MoveNext Wend End With
J'espère avoir été assez clair, ce n'était pas évident ;-)
Merci à tous pour vos conseils :-)
@+
Partager