Nico_TDH
Messages postés4Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention27 septembre 2005
-
26 sept. 2005 à 11:59
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
27 sept. 2005 à 14:53
Bonjour.
Novice en VB, je me lance dans un chantier assez ardu.
Je souhaite, dans mon programme, récupérer les valeurs inscrites dans une base de données, dans un MSHFlexgrid et, lorsqu'on clique sur une ligne du MSHFlexgrid, une nouvelle form s'affiche avec les valeurs de chacun des champs de ma table dans des labels.
Plus clairement :
Dans une forme "frmListe" j'ai un MSGFlexgrid (mflexListe) qui liste les enregistrements de ma table
Lorsque je clique sur une ligne, j'affiche une nouvelle form -> "frmClient"
Sur cette form "frmClient", j'ai des labels : civilite, nom, prenom, adresse, tel...
Pour un côté esthétique, je souhaite concaténer les données "civilite", "nom" et "prenom", ce qui m'éviterais d'avoir un label par recordset et d'avoir le prénom à l'autre bout de ma form (au lieu d'être tout proche du prénom )
A l'heure actuelle, pour mon MSHFlexgrid , j'ai le code suivant :
mflexListe.Row = mflexListe.RowSel
mflexListe.Col = 0 frmClient.adodcClient.RecordSource "SELECT * FROM CLIENT WHERE CLIENT_Num" & mflexListe.Text
frmClient.Show
frmClient.adodcClient.Refresh
Sur ma form "frmClient" j'ai le code suivant :
adodcClient.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\client.mdb;Persist Security Info=False"
adodcClient.RecordSource = "select * from CLIENT"
adodcClient.Refresh
Dim i As Integer
For i = 0 To 4
Set lblDonneeClient(i).DataSource = adodcClient
Next i
lblDonneeClient(0).DataField = "CL_Civil"
lblDonneeClient(1).DataField = "CL_Nom"
lblDonneeClient(2).DataField = "CL_Prenom"
lblDonneeClient(3).DataField = "CL_Adresse"
lblDonneeClient(4).DataField = "CL_Cp"
lblDonneeClient(5).DataField = "CL_Ville"
J'ai essayé plusieurs choses mais rien y fait.
J'ai essayé :
lblDonneeClient(0).DataField "CL_Civil" & "CL_Nom" & "CL_Prenom"> Ca ne marche pas lblDonneeClient(0).DataField "CL_Civil" + "CL_Nom" + "CL_Prenom"> Ca ne marche pas
Dim tmpNom As String tmpNom adodcClient.Recordset!CL_Civil & adodcClient.Recordset!CL_Nom & adodcClient.Recordset!CL_Prenom> Ca ne marche pas
Du coup, je ne sais pas s'il est possible de concaténer les données provenant de 3 recordset différents...
Si vous avez une petite idée à me proposer pour que je puisse finir ce code, ce serait super.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 27 sept. 2005 à 11:59
mis à part que ta réponse est résolue (....)
à première vue, je dirais que ta reqête n'est pas prise en compte.
essaie quelquechose de ce genre :
'Dans la form "frmListe"
Private Sub mflexListe_Click()
Dim Fc As frmClient Fc.ReqSQL "SELECT * FROM CLIENT WHERE CL_Num" & mflexClient.TextMatrix(mflexListe.Row, 0)
Fc.Show
Unload Me
End Sub
'Dans la form "frmClient"
Public ReqSQL As String
Private Sub Form_Load()
adodcClient.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\client.mdb;Persist Security Info=False"
adodcClient.RecordSource = ReqSQL
adodcClient.Refresh
Dim i As Integer
For i = 0 To 8
Set lblDonneeClient(i).DataSource = adodcClient
Next i
lblDonneeClient(0).DataField = "CL_Civil"
lblDonneeClient(1).DataField = "CL_Nom"
lblDonneeClient(2).DataField = "CL_Prenom"
lblDonneeClient(3).DataField = "CL_DateNaiss"
lblDonneeClient(4).DataField = "CL_Adresse"
lblDonneeClient(5).DataField = "CL_Cp"
lblDonneeClient(6).DataField = "CL_Ville"
lblDonneeClient(7).DataField = "CL_Tel"
lblDonneeClient(8).DataField = "CL_Gsm"
lblDonneeClient(0).Visible = False
lblDonneeClient(1).Visible = False
lblDonneeClient(2).Visible = False
lblDonneeClient(4).Visible = False
lblDonneeClient(5).Visible = False
lblDonneeClient(6).Visible = False
lblCivilNomPrenom.Caption = lblDonneeClient(0) & ". " & lblDonneeClient(1) & " " & lblDonneeClient(2)
lblCivilNomPrenom.FontBold = True
lblAdressCpVille.Caption = lblDonneeClient(4) & " - " & lblDonneeClient(5) & " " & lblDonneeClient(6)
End Sub
Nico_TDH
Messages postés4Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention27 septembre 2005 27 sept. 2005 à 09:53
Oups
PCPT ! Ta réponse est parfaite car elle me permet d'afficher en effet, les données présentes dans les Recordset de façoon concaténée cependant, j'ai encore un petit soucis et je n'arrive pas à trouver d'où viens l'erreur.
Lorsque dans mon MSHFlexgrid je clique sur une ligne, dans ma form "frmClient" le nom qui s'affiche est toujours celui qui est inscrit en premier dans ma table ! Alors que, je peut avoir sans problème le numéro de téléphone du client sélectionné dans le MSHFlexgrid (par exemple) !
Du coup, je me demande si il n'y aurais pas un problème au niveau de mon MSHFlexgrid
Si vous avez (encore) une petite suggestion à me faire pour mon code, le voici :
Dans la form "frmListe"
Private Sub mflexListe_Click()
mflexListe.Row = mflexListe.RowSel
mflexListe.Col = 0 frmClient.adodcClient.RecordSource "SELECT * FROM CLIENT WHERE CL_Num" & mflexClient.Text
frmClient.Show
frmClient.adodcClient.Refresh
Unload Me
End Sub
Dans la form "frmClient"
Private Sub Form_Load()
adodcClient.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\client.mdb;Persist Security Info=False"
adodcClient.RecordSource = "select * from CLIENT"
adodcClient.Refresh
Dim i As Integer
For i = 0 To 8
Set lblDonneeClient(i).DataSource = adodcClient
Next i
lblDonneeClient(0).DataField = "CL_Civil"
lblDonneeClient(1).DataField = "CL_Nom"
lblDonneeClient(2).DataField = "CL_Prenom"
lblDonneeClient(3).DataField = "CL_DateNaiss"
lblDonneeClient(4).DataField = "CL_Adresse"
lblDonneeClient(5).DataField = "CL_Cp"
lblDonneeClient(6).DataField = "CL_Ville"
lblDonneeClient(7).DataField = "CL_Tel"
lblDonneeClient(8).DataField = "CL_Gsm"
lblDonneeClient(0).Visible = False
lblDonneeClient(1).Visible = False
lblDonneeClient(2).Visible = False
lblDonneeClient(4).Visible = False
lblDonneeClient(5).Visible = False
lblDonneeClient(6).Visible = False
lblCivilNomPrenom.Caption = lblDonneeClient(0) & ". " & lblDonneeClient(1) & " " & lblDonneeClient(2)
lblCivilNomPrenom.FontBold = True
lblAdressCpVille.Caption = lblDonneeClient(4) & " - " & lblDonneeClient(5) & " " & lblDonneeClient(6)
End Sub
Encore merci pour les suggestions que vous pouvez me faire pour m'aider à résoudre ce problème et s'il y a une erreur tout bête, désolé de ne pas l'avoir vu !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Nico_TDH
Messages postés4Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention27 septembre 2005 27 sept. 2005 à 14:17
Merci beaucoup pour ton aide PCPT !
Tout tes conseils se sont révélés être impecables. J'ai juste apporté quelques petites modifications à ton dernier code et maintenant, tout fonctionne à merveille. J'ai fait le test avec plusieurs enregistrements et ça me donne le résultat escompté.