Se positionner dans une autre table sans relation vb2005
vercomax
Messages postés547Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention11 septembre 2013
-
17 oct. 2006 à 20:20
bricoyeye
Messages postés326Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention29 avril 2008
-
18 oct. 2006 à 20:15
Bonsoir,
J'ai 2 tables non liées par une relation (table1 & table2)
dans table1, j'ai un champ nommé num_lieu, dans table2 j'ai plusieur champ dont 1 nommé N° (qui correspond au N° du lieu)
je souhaite en fonction de num_lieu dans table1, pour récupérer des infos sur la ligne correspondante dans table2 grace à num_lieu
je sais, vous allez me dire, fais une relation !
mais je ne souhaite pas
je pensais balayer la table 2 et m'arreter sur le N°=num_lieu et donc récupérer des infos dans certains champs de cette ligne
Dolphin Boy
Messages postés630Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention17 février 2007 17 oct. 2006 à 21:54
Salut, connais-tu SQL ? On peut créer un recordset avec une requete SQL sans que les tables aient des relations entre elles. Dans ton cas, ça peut ressembler en ADO à :
rst.open "select table2.* from table1, table2 where table1.num_lieu = table2.N°", cnn, ..., ...
vercomax
Messages postés547Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention11 septembre 20132 17 oct. 2006 à 22:36
merci, mais juste un truc, les 2 tables font partie de la même base
j'avais pensé aux requetes sql, mais je trouvais çà lourd
c un truc du genre:
1) pointer sur num de table1
2) pointer dans table2 sur l'enregistrement dont le champ N° est égal au champ num de table1
3) récupérer la valeur du champ nom de la table2
ou
localiser dans table2 N°=num, retourner le champ nom de table2
bon, et si je mlets une relation entre les champs N° et num, chaque fois que je vais me déplacer dans table1, il va se déplacer dans table2, çà serait ok, mais comment je récupère la valeur du champ nom ? avec le tableadapter, le bindingsource, je ne sais ....
avec des datagridview j'arrive, mais en code direct, je ne sais pas faire
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
vercomax
Messages postés547Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention11 septembre 20132 17 oct. 2006 à 23:16
oui, c pas lour je sais, ct joke :)
dans ton aide:
tb1.Open "SELECT * FROM [champ] WHERE [num_lieu] like '%" & (ton numero) & "%' ", bd1, adOpenDynamic, adLockOptimistic
tb2.Open "SELECT * FROM [champ] WHERE [N°] like '%" & (ton numero) & "%' ", bd1, adOpenDynamic, adLockOptimistic
c plutot çà que je ferai:
tb2.Open "SELECT * FROM [champ] WHERE [N°] like '%" & (N° de tb1) & "%' ", bd1, adOpenDynamic, adLockOptimistic
car je vais me balader dans tb1, balancer à chaque mouvement la requete, et donc pointer sur table2 au bon numéro
mais j'aimerai savoir comment récupérer alors la valeur d'un champ de tb2, c'est tout en fait.
bricoyeye
Messages postés326Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention29 avril 20082 18 oct. 2006 à 00:20
Mais bon en SQL c'est mieux, comme dit dolphin,
rst.open "select table2.* from table1, table2 where table1.num_lieu = table2.N°", cnn, ..., ...
et tu reprends la variable.
vercomax
Messages postés547Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention11 septembre 20132 18 oct. 2006 à 08:07
merci,
quand vous écrivez:
tb1!champ = tb2! champ
tb1, ou tb2 c'est quoi ?
un tableadapter, un bindingsource ?
avez-vous un exemple de code concret mettons avec:
table1 nommée "releves", 3 champs "num_lieu", "num_nom", "meteo"
table2 nommée "lieux", 2 champs "N°", "desi_lieu"
faisant partie de la même base access "meteo.mdb"
donc j'ai:
1 meteoDataSet, 1 relevesTableAdapter, 1 relevesBindingSource, 1 lieuxTableAdapter, 1 lieuxBindingSource, 1 relation entre num_lieu et N° nommée "releves_lieux"
bricoyeye
Messages postés326Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention29 avril 20082 18 oct. 2006 à 20:15
Option Explicit
Dim tb1 As New ADODB.Recordset
Dim tb2 As New ADODB.Recordset
Dim bd As New ADODB.Connection
dans un sub:
bd.Provider = "microsoft.jet.oledb.4.0"
bd.ConnectionString = App.Path & "nom_de ta_base" 'chemin de la base
bd.Open
'là tu ouvres ta base
tb1.Open "SELECT * FROM [releves] WHERE [num_lieut
] like '%" & (ce_que_tu_veux) & "%' ", bd, adOpenDynamic, adLockOptimistic 'ouvre la table1 reveles qui à pour champ num_lieut quand il correspond à ce que tu veux
tb2.Open "SELECT * FROM [lieux] WHERE [N°] like '%" & (ce_que_tu_veux) & "%' ", bd, adOpenDynamic, adLockOptimistic 'idem pour la table2
et maintemant le update de ce que tu veux faire, en sachant que:
tb1!num_lieut = tb2! N°
te donnera num_lieut(de la table1) = N°(de la table2)
Si tu veux selectionner un autre champs de ta table 1 ou 2, tu mets WHERE[TON_CHAMP]