Recordset sur deux table

Résolu
Signaler
Messages postés
212
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
25 juillet 2005
-
Messages postés
50
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2007
-
Bonjour,
Voila j'utilise du DAO pour ouvrir des enregistrement et donc un recordset comme ceci

Set db1 = DBEngine.OpenDatabase("c:\fichier.mdb")
sql1 = "SELECT FROM TStock;"
Set record1 = db1.OpenRecordset(sql1, dbOpenDynaset)

Ca ne pose pas de probleme si toute les table que je veux utiliser se trouve dans le meme fichier (ici c:\fichier.mdb)

Par contre parfois je voudrais creer une requete sql mettant en jeux plusieures table de plusieur fichier
Comment doit'je faire ???

par exemple :
TStock est dans le fichier c:\fichier.mdb
TInventaire est dans le fichier c:\fichier2.mdb
Comment doit'je faire pour creer un recodset qui pourrais m'afficher une liaison entre les deux (avec des inner join dans le sql)

Merci d'avance

7 réponses

Messages postés
50
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2007
2
salut :
je pense que c'est trés simple .tu peus créer une seul bd et puis tu va liée les tables des autres bd que tu veus utilisés comme ca tu manipuler plusieur tables des bd differentes.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
9
Salut,





Premiere idée qui me viens :



Set db1 = DBEngine.OpenDatabase("c:\fichier.mdb")

sql1 = "SELECT * FROM TStock;"

Set rst1= db1.OpenRecordset(sql1, dbOpenDynaset)



dim max1 as integer

max = rst1.RecordCount

For i=1 to max1



Set db2 = DBEngine.OpenDatabase("c:\fichier2.mdb")

sql2 = "SELECT * FROM TInventaire WHERE TInventaire.StockID=" & rst1("idStock")

Set record2 = db2.OpenRecordset(sql2, dbOpenDynaset)



Dim max2 as Integer

max2 = rst2.RecordCount

For j=1 to max2



' Traitement de tes infos ...



Next J

rst2.Close

db2.Close



Next i

rst1.Close

db1.Close



Sinon tu peux te répliquer les infos dans une même base à chaque fois
que tu en as besoin (par exmple importer les infos de fichier2 vers
fichier1) mais tu va consommer du temps et de l'espace
disque...donc pas viable... Sinon fusionner directement tes tables dans
une base unique et travailler tout le temps avec une unique base ... Vu
que j'ignore pourquoi tes données sont éclatées dans deux bases, je ne
peux pas trancher...



En esperant avoir répondu à ta question... J'ai pas testé ce code, donc
faut faire les déclarations d'usage, voir le corriger... c'est plus le
principe qui est presenté ...





++



Zlub
Messages postés
212
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
25 juillet 2005

Salut, merci d'avoir repondu rapidement

Sinon ton code m'a l'air bien compliqué...et surtout il risque de pomper beaucoups de resource......ce sont de grosse base de donné que j'utilise....
donc je n'utilise jamais de For j=1 to max2 ...

Mes données sont eclater dans plusieurs tables ca me permet de les actualier facilement sans touchez aux autres données...

Sinon j'ai entendu parler de TransferDatabase en faisant des recherche mais impossible de le faire marcher =(
Messages postés
212
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
25 juillet 2005

Salut, merci d'avoir repondu rapidement

Sinon ton code m'a l'air bien compliqué...et surtout il risque de pomper beaucoups de resource......ce sont de grosse base de donné que j'utilise....
donc je n'utilise jamais de For j=1 to max2 ...

Mes données sont eclater dans plusieurs tables ca me permet de les actualier facilement sans touchez aux autres données...

Sinon j'ai entendu parler de TransferDatabase en faisant des recherche mais impossible de le faire marcher =(
Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
9
Salut,

Mais je pige pas
l'interet d'avoir pleins de bases ... surtout que manifestement les
données sont liées...pourquoi ne pas mettre les tables qui ont un lien
logique dans la même base ?



T'as pas une table = une base quand même ?

++

Zlub
Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
9
Salut,

Hors mis la methode
que je t'ai indiqué je ne vois pas par quel tour de passe passe tu peux
lier des données provenant de deux fichiers distincts...


C'est pas ne methode de barabare c'est juste une jointure, à la seul
différence c'est qu'il faut deux connexions ... si tu trouve mieux, je
suis curieux de savoir comment tu vas proceder ...

++

Zlub
Messages postés
212
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
25 juillet 2005

J'ai plusieurs base parceque certaine doivent etre mis a jour depuis un autre fichier (ca me permet de mettre a jour en copiant collant le fichier plutot que de passer par un code)

et ca permet aussi de mieux s'y retrouver (j'ai 5 bases de données et au total presque 20 tables)

Sinon g trouvé comment faire :
suffisait de lier les tables via access
pk j'y ai aps pensé plus tot =)

et merci qd meme