Correspondance mutlitables [Résolu]

Signaler
Messages postés
106
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
2 mai 2012
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour,
mon probleme est le suivant : j'ai une feuille sur laquelle se trouve un datagrid et un textbox. Le datagrid affiche des informations  de 2 tables (MEMBRE et COMPTE) de ma bdd, lorsqu'on entre le nom d'un membre recherché dans le textbox, il selectionne le dit membre et affiche ses informations. Le hic ici est que au départ il m'affiche bien les informations des 2 tables, mais lorsque je saisie le nom du membre recherché il n'affiche que les informations de la table MEMBRE je ne sais pas comment faire pour que les informations de ma 2eme table reste.

Voici le code placé dans la form:
Private Sub Form_load()
'Définition du pilote de connexion
cnx.CursorLocation = adUseServer
cnx.Provider = "Microsoft.jet.OLEDB.4.0"
'Définition de la chaine de connexion
cnx.ConnectionString = "C:\Documents and Settings\Administrateur\Bureau\Nouveau dossier\fiferpro.mdb"
'Ouverture de la base de donnée
cnx.Open
'Définition du curseur
rst.CursorLocation = adUseClient
rst.Open " SELECT compte.*, membre.* FROM membre Inner join compte on membre.mat_mem = compte.mat_mem", cnx, adOpenStatic, adLockOptimistic, adCmdText
If rst.RecordCount = 0 Then
MsgBox " Il n'y a aucun enregistrement dans la base"
Exit Sub
End If
Set DataGrid1.DataSource = rst
DataGrid1.Refresh
End Sub

Voici le code du textbox :
Private Sub Text1_Change()
Dim str As String
If rst.State <> adStateClosed Then rst.Close
str = "select * from membre where nom_mem like '" & Text1 & "%'"
rst.Source = str
rst.Open
Set DataGrid1.DataSource = rst
End Sub

Comme vous l'avez remarquer j'ai utilisé INNER JOIN  pour alimenter mon datagrid avec les 2 tables. Mais comment faire maintenant pour qu'à la saisie du nom cela n'affecte pas l'affichage du datagrid et n'affiche pas que les informations du membre? aidez moi SVP
Merci d'avance

3 réponses

Messages postés
96
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
10 mars 2011
2
Bonjour, si tu veux conserver les infos des deux tables il faut indiquer la jointure dans l'instruction sur text1_change en y ajoutant ta condition.

rst.Open " SELECT compte.*, membre.* FROM membre Inner join compte on membre.mat_mem = compte.mat_mem WHERE nom_mem like '" & Text1 & "%'", cnx, adOpenStatic, adLockOptimistic, adCmdText
Messages postés
106
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
2 mai 2012

Merci beaucoup ça marche.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut
Pense à valider la réponse de JPVB si tu considères le problème comme résolu.
Ca fait toujours plaisir et ça aidera les autres à trouver une réponse à une question similaire.

Merci