Bonjour à tous
Voilà mon petit probleme (je vais essayé d'être clair) :
Je travaille avec Access 2003, j'utilise des tables Access et des Tables Liées via Odbc pointant sur une base DB2.
Mon probleme se pose lors de la liaison avec jointures entre Acess et Db2,
j'utilise du code Vba et la méthode Ado pour les requetes
Par exemple, je souhaite lier 2 tables : une Access ("Table1") et l'autre Db2 ("Table2") et placer le résultat ds une table Access. Le volume pouvant être retourné est de l'ordre de 200000 enregistrements.
Ma question est : Quelle est la meilleur méthode en Ado pour réaliser ce type de requete ?
J'ai essayé 2 méthodes et j'aimerai votre avis :
1- j'ai essayé l'instruction Ado :
requete = "Select A.Champs,B.Champs2....
From Table1 A inner join Table2 B
on (A.champsKey1 = B.champsKey1) and (A.champsKey2 = B.champsKey2)
Where A.Champs="xx" and B.Champs3="ZZ"
'Connection'.BeginTrans
'Connection'.execute 'requete',,adExecuteNoRecords
'Connection'.CommitTrans
Mais le temps d'execution me parait assez lent voir déplorable
2- J'ai essayé la méthode Ado avec un recordset (schématisé)
set rstOut = currentdb.openrecordset(TableResultat)
rstAdo.open 'Table1',,dbforwardonly
do while not rstado.eof
rstado2.open "select * from table2 where champs1=" & rstado.fields(champs1).value
rstout.addnew
......
rstout.update
rstado.movenext
loop
Cela fonctionne pour pour traiter 200000 enregistrements, c'est long !! (je lance 200000 fois le select rstado2)
Quel serait pour vous la meilleur méthode à employé pour optimizer le traitement.
Merci
Partager