Recordset sur deux table

Résolu
cs_tombal Messages postés 212 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 25 juillet 2005 - 24 juil. 2005 à 22:56
hindhinf Messages postés 50 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 27 juillet 2007 - 26 juil. 2005 à 13:13
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

hindhinf Messages postés 50 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 27 juillet 2007 2
26 juil. 2005 à 13:13
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
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
24 juil. 2005 à 23:17
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
0
cs_tombal Messages postés 212 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 25 juillet 2005
24 juil. 2005 à 23:54
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 =(
0
cs_tombal Messages postés 212 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 25 juillet 2005
24 juil. 2005 à 23:57
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 =(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
24 juil. 2005 à 23:58
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
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
25 juil. 2005 à 00:02
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
0
cs_tombal Messages postés 212 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 25 juillet 2005
25 juil. 2005 à 01:16
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
0
Rejoignez-nous