Concaténation de plusieurs Recordset

Résolu
Nico_TDH Messages postés 4 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 27 septembre 2005 - 26 sept. 2005 à 11:59
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Derniè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.

6 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 sept. 2005 à 12:47
salut,

si tu veux gérer des DataField, tu devras faire quelquechose du genre :

lblDonneeClient(0).DataField = "CL_Civil"
lblDonneeClient(1).DataField = "CL_Nom"
lblDonneeClient(2).DataField = "CL_Prenom"
lblDonneeClient(0).Visible = False
lblDonneeClient(1).Visible = False
lblDonneeClient(2).Visible = False

AutreLabel.Caption = lblDonneeClient(0) & ". " & lblDonneeClient(1) & " " & lblDonneeClient(2)

PCPT
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


PCPT
3
Nico_TDH Messages postés 4 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 27 septembre 2005
26 sept. 2005 à 17:47
Merci beaucoup PCPT !

J'avais pas essayé ça et, à vrai dire, ça fonctionne exactement comme je le souhaitais.

Encore merci.
0
Nico_TDH Messages postés 4 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 27 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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nico_TDH Messages postés 4 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 27 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é.

Bravo à toi, t'es un chef
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 sept. 2005 à 14:53
au plaisir
PCPT
0
Rejoignez-nous