Récuperer dans une table des lignes qui ont été supprimées en comparant 2 autres
spap
Messages postés13Date d'inscriptionjeudi 8 janvier 2004StatutMembreDernière intervention18 janvier 2006
-
17 janv. 2006 à 12:18
spap
Messages postés13Date d'inscriptionjeudi 8 janvier 2004StatutMembreDernière intervention18 janvier 2006
-
18 janv. 2006 à 09:40
Bonjour,
n'étant pas une star du développement mais ayant quelques notions j'ai développé pour mon boulot un petit programme qui me permet de comparer 2 fichiers excel qui va supprimer dans la table2 les lignes identiques à la table1 selon certains champs que je définie au préalable. J'importe bien entendu ces 2 fichiers dans Access pour lancer mon programme.
Voilà à quoi il ressemble :
Option Compare Database
Dim DBNico As Database
Dim Tbl1 As Recordset
Dim Tbl2 As Recordset
Private Sub Cmdlancer_Click()
Set DBNico = DBEngine.Workspaces(0).Databases(0)
Set Tbl1 = DBNico.OpenRecordset("Table1", DB_OPEN_TABLE)
Set Tbl2 = DBNico.OpenRecordset("Table2", DB_OPEN_TABLE)
Dim I As Integer
Tbl1.MoveFirst
Tbl2.MoveFirst
I = 0
While Not Tbl1.EOF
While Not Tbl2.EOF
If Tbl1!CP Tbl2!CP And Tbl1!NOM Tbl2!NOM And Tbl1!ADR = Tbl2!ADR Then
Tbl2.Delete
I = I + 1
End If
Tbl2.MoveNext
Wend
Tbl2.MoveFirst
Tbl1.MoveNext
Wend
Tbl1.Close
Tbl2.Close
txtval.Visible = True
txtval = I
End Sub
Private Sub Form_Load()
txtval.Visible = False
End Sub
Le problème c'est que maintenant j'aimerai bien mettre dans une 3ème table les lignes qui ont été supprimées, j'ai pensé qu'en créant et important un 3ème fichier Excel ayant des champs identiques je pourrai y arriver mais je ne sais pas si cette 3ème table se déclare comme les 2 autres (apparemment pas), ni comment faire pour lui donner l'instruction de type Tbl3(J) = Tbl1(I) qui va lui permettre de recevoir la ligne souhaitée. J'ai pensé aussi créer une variable du même type que mes tables pour agrémenter ma 3ème table mais je ne connais pas la syntaxe adéquate. En bref je suis dans le flou et j'aurai besoin d'aide.
J'espère avoir été claire et recevoir quelques conseils.
Merci
A voir également:
Récuperer dans une table des lignes qui ont été supprimées en comparant 2 autres
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 janv. 2006 à 19:07
Salut
Ta recherche peut se limiter à une requète SQL :
strSQL = "Delete From Table1 " & _
" where (champ1 + champ2 + ... + champX) " & _
" in (Select champ1 + champ2 + ... + champX" & _
" from Table2)"
J'ai bien mis + entre les champs pour qu'il fabrique une chaine de recherche comportant tous les champs
et ainsi être sûr que cette même fiche complète existe dans l'autre table.
tonRecordSet.Execute strSQL, taConnexion, r ' = syntaxe ADODB, je ne connais pas celle que tu utilises
'r' te fournira le nombre de fiches concernées par la méthode Delete.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
spap
Messages postés13Date d'inscriptionjeudi 8 janvier 2004StatutMembreDernière intervention18 janvier 2006 18 janv. 2006 à 09:40
Merci, la requête marche du feu de dieu et est plus efficace que le code que j'avais créé cependant je ne comprends pas bien la suite de ton message : tonRecordSet.Execute strSQL, taConnexion, r ' = syntaxe ADODB
En effet je n'ai pas l'instruction "Execute" dans le code VBA.
Si tu pouvais m'éclairer à nouveau ça serait sympa.