Correspondance mutlitables

Résolu
bruce207 Messages postés 106 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 2 mai 2012 - 8 avril 2008 à 12:03
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 9 avril 2008 à 19:08
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

JPGVB Messages postés 96 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 10 mars 2011 2
8 avril 2008 à 12:39
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
3
bruce207 Messages postés 106 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 2 mai 2012
9 avril 2008 à 10:04
Merci beaucoup ça marche.
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
9 avril 2008 à 19:08
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
0