Recordset sur deux table [Résolu]

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

7 réponses

Meilleure réponse
hindhinf 50 Messages postés dimanche 9 mai 2004Date d'inscription 27 juillet 2007 Dernière intervention - 26 juil. 2005 à 13:13
3
Merci
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.

Merci hindhinf 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Zlub 815 Messages postés mercredi 11 octobre 2000Date d'inscription 29 septembre 2010 Dernière intervention - 24 juil. 2005 à 23:17
0
Merci
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
cs_tombal 212 Messages postés samedi 8 février 2003Date d'inscription 25 juillet 2005 Dernière intervention - 24 juil. 2005 à 23:54
0
Merci
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 =(
cs_tombal 212 Messages postés samedi 8 février 2003Date d'inscription 25 juillet 2005 Dernière intervention - 24 juil. 2005 à 23:57
0
Merci
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 =(
Zlub 815 Messages postés mercredi 11 octobre 2000Date d'inscription 29 septembre 2010 Dernière intervention - 24 juil. 2005 à 23:58
0
Merci
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
Zlub 815 Messages postés mercredi 11 octobre 2000Date d'inscription 29 septembre 2010 Dernière intervention - 25 juil. 2005 à 00:02
0
Merci
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
cs_tombal 212 Messages postés samedi 8 février 2003Date d'inscription 25 juillet 2005 Dernière intervention - 25 juil. 2005 à 01:16
0
Merci
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.