SQL, Combobox et lecture dans des textbox vb.net 2015 vb

JSB-24270 Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bien le bonjour.
Le vieux vient encore demander de l'aide.
J'ai une combobox reliée à une base sql, les items sont biens lus mais je n'arrive pas à sélectionner un item et faire afficher les résultats dans des textbox adéquates.
voici mon bout de code de départ placé dans la form1_load


Dim Connexion As New SqlConnection("Data Source=******;Initial Catalog=******;User Id=******;Password=*******;")
Try
Connexion.Open()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Dim Req As String = "SELECT * FROM ma table"
Dim Comm As New SqlCommand(Req, Connexion)
Comm.ExecuteNonQuery()
Dim MonReader As SqlDataReader = Comm.ExecuteReader()
Do While MonReader.Read()
ComboBox1.Items.Add(MonReader("nom") + " " + MonReader("prenom"))
Loop
MonReader.Close()


ensuite je coince lamentablement je ne sais pas comment faire pour afficher le résultat, il y a 16 textbox + 1 picturebox et 1 richtextbox.
Ou il n'affiche rien ou j'ai des erreurs.
Merci
Cordialement
Jacques
A voir également:

6 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, comment se comporte le programme que tu nous montres?
0
Utilisateur anonyme
 
Bonsoir

tout d'abord, voici un petit tuto pour bien utiliser les balises de code en postant sur le forum
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite, pour ton problème, une solution consiste à profiter de VB.Net pour ce qu'il est, à savoir un langage objet pensé pour la liaison de données (binding)

Ce que tu as codé est ce qu'on aurait fait avec du VB6 ou du VBA.

En .Net Winform (je suppose que tu ne fais de WPF), la plupart des controles sont prévu pour le binding. C'est à dire, que le contrôle ne stocke pas les données, il ne sert que d'intermédiaire entre l'utilisateur et la source de données.

Voici un petit tuto sur le sujet https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource je n'y ai pas parlé de comboxbox, mais il fonctionne à peu près comme la listbox.

Si à la lecture du tuto, tu souhaites appliquer cette solution, je te guiderai au mieux que je peux.
Si tu souhaites continuer à "l'ancienne", il faudra attendre un autre bénévole, car je n'ai plus l'habitude et l'envie depuis longtemps de faire ainsi
0
jacques
 
Bonjour.
La connection SQL se fait bien avec la BD, et la table sélectionnée s'affiche dans ma combobox
mais je ne sais pas comment faire pour que lorsque je sélectionne un item, ma sélection affiche dans mes textbox les données sélectionnées correspondantes.
Dans ma combobox je fais afficher les champs nom, prénom et date de naissance afin d'avoir un aperçu précis de ma demande.
J'espère avoir été clair, ( ce n'est pas toujours le cas ).
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
je pense alors que tu dois ajouter du code sur un événement de la combobox.
0
Jacques
 
Bonjour yg_be
J'ai déjà fait la manip mais rien n'y fait.
J'ai même fait une imbrication sql pour que le choix soit renvoyé mais rien ne fonctionne.
En PHP c'est simple mais en vb on ne fait pas la même chose.
Je ne trouve pas le moyen y compris sur la toile, dès que je tape VB ou VBA je ne trouve que des liens vers EXCEL ce qui ne correspond pas du tout.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
peux-tu montrer le code que tu as fait pour traiter l’événement de la combobox?
0

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

Posez votre question
Jacques
 
Voici mon code théorique et qui ne fonctionne pas
J'ai tout placé en remarque afin de pouvoir continuer à coder sur d'autre sujets.


'Dim cb As Integer = ComboBox1.SelectedIndex
'If cb < 1 Then
'cb = 1
'Else
'cb = cb + 1
'End If
'Dim Connexion As New SqlConnection("Data Source=OMNIFAB;Initial Catalog=PERSO;User Id=*******;Password=******")
'Try
'Connexion.Open()
'Catch ex As Exception
'Console.WriteLine(ex.Message)
'End Try

'Dim Req1 As String = "Select * FROM MATABLE WHERE id='" & cb & "' "
' Dim Comm1 As New SqlCommand(Req1, Connexion)
'Comm1.ExecuteNonQuery()
'Dim MonReader1 As SqlDataReader = Comm1.ExecuteReader()

'If MonReader1.Read() Then
'Me.TextBox1.Text = MonReader1("ADS_nom").ToString
'Me.TextBox2.Text = MonReader1("ADS_prenom").ToString
'Me.TextBox3.Text = MonReader1("ADS_fonction").ToString
'Me.TextBox4.Text = MonReader1("ADS_num").ToString
'Me.TextBox5.Text = MonReader1("nom").ToString
'Me.TextBox6.Text = MonReader1("prenom").ToString
'Me.TextBox7.Text = MonReader1("adresse").ToString
'Me.TextBox8.Text = MonReader1("cp").ToString
'Me.TextBox9.Text = MonReader1("ville").ToString
'Me.TextBox10.Text = MonReader1("d_naiss").ToString
'Me.TextBox11.Text = MonReader1("d_lieu").ToString
'Me.TextBox12.Text = MonReader1("natio").ToString
'Me.TextBox13.Text = MonReader1("lieu").ToString
'Me.TextBox14.Text = MonReader1("tel_f").ToString
'Me.TextBox15.Text = MonReader1("tel_p").ToString
'Me.dateInter.Text = MonReader1("dt_arret").ToString
'Me.RichTextBox1.Text = MonReader1("rapport").ToString
'Dim pa As String = My.Application.Info.DirectoryPath
'Dim rp As String = MonReader1("photo").ToString
'rp = Replace(rp, "/", "\")
'PictureBox1.Image = System.Drawing.Image.FromFile(pa & "\" & rp)
'PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
' End If

'MonReader1.Close()
Connexion.Close()
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
merci de spécifier "basic" avec les balises de code.
"ne fonctionne pas": message d'erreur? quel est le type du champ id?
as-tu essayé de copier le contenu de Req1, et de l'utiliser en direct sur ta base?
0
Utilisateur anonyme
 
Bonsoir Jacques, tu ne souhaites pas t'orienter dans la méthode que je t'ai proposé c'est un choix que je respecte.
Par contre, je t'ai mis en lien un tuto sur la bonne façon d'utiliser les balises de codes, et ça que tu l'ignores c'est agaçant, car ton code est illisible.
0
jacques > Utilisateur anonyme
 
Bonjour.
Excuse moi mais je n'ai pas vu ton message seul celui de yg_be m'est parvenu.
Désolé
Peux tu me réexpédier le lien et ta méthode svp, je les utiliserai sans problème si le besoin s'en fait sentir
Merci.
0
Jacques > Utilisateur anonyme
 
Un grand merci, je suis allé voir et effectivement je fais mon mea-culpa je n'avais pas fait attention.
Pour ce qui est du WPF, je ne connais pas.
Effectivement, je suis en vb et m'étais arrêté au VB6 et après une longue absence ( plus de 10 ans ) j'ai décidé de m'y remettre.
Ceci dit, je n'oublierai pas pour la prochaine fois l'utilisation de la balise de code.
Merci et bonne soirée
0
Jacques
 
RE.
Je suis quelqu'un de têtu et j'ai trouvé la solution en fouillant un peu partout y compris là ou je n'avais rien à faire.
voici mon code final qui fonctionne très bien voire mieux que prévu puisque j'ai trouvé aussi la possibilité de choix sur 2 items.
"Pour rappel" Je travaille en vb sous visual studio 2015"
DANS LE FORM:

Dim Connexion As New SqlConnection("Data Source=OMNIFAB;Initial Catalog=PERSO;User Id=******;Password=******;")
Try
Connexion.Open()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Dim Req As String = "SELECT * FROM matable"
Dim Comm As New SqlCommand(Req, Connexion)
Comm.ExecuteNonQuery()
Dim MonReader As SqlDataReader = Comm.ExecuteReader()
Do While MonReader.Read()
ComboBox1.Items.Add(MonReader("nom") & " " & MonReader("prenom"))
Loop

DANS LA SUB DU COMBOBOX:

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged

Dim van As String
van = ComboBox1.Text
Dim b, c As String
b = Split(van, " ")(0)
c = Split(van, " ")(1)

Dim Connexion As New SqlConnection("Data Source=OMNIFAB;Initial Catalog=PERSO;User Id=******;Password=******;")
Try
Connexion.Open()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try

' SELECTION DANS LA BD
Dim Req1 As String = "Select * FROM matable WHERE nom='" & b & "' " ' , prenom='" & c & "' "
Dim Comm1 As New SqlCommand(Req1, Connexion)
Comm1.ExecuteNonQuery()
Dim MonReader1 As SqlDataReader = Comm1.ExecuteReader()
' AFFICHAGE DU RESULTAT
If MonReader1.Read() Then
Me.TextBox1.Text = MonReader1("ADS_nom").ToString
Me.TextBox2.Text = MonReader1("ADS_prenom").ToString
Me.TextBox3.Text = MonReader1("ADS_fonction").ToString
Me.TextBox4.Text = MonReader1("ADS_num").ToString
Me.TextBox5.Text = MonReader1("nom")
Me.TextBox6.Text = MonReader1("prenom").ToString
Me.TextBox7.Text = MonReader1("adresse").ToString
Me.TextBox8.Text = MonReader1("cp").ToString
Me.TextBox9.Text = MonReader1("ville").ToString
Me.TextBox10.Text = MonReader1("d_naiss").ToString
Me.TextBox11.Text = MonReader1("d_lieu").ToString
Me.TextBox12.Text = MonReader1("natio").ToString
Me.TextBox13.Text = MonReader1("lieu").ToString
Me.TextBox14.Text = MonReader1("tel_f").ToString
Me.TextBox15.Text = MonReader1("tel_p").ToString
Me.dateInter.Text = MonReader1("dt_arret").ToString
Me.RichTextBox1.Text = MonReader1("rapport").ToString
Dim pa As String = My.Application.Info.DirectoryPath
Dim rp As String = MonReader1("photo").ToString
rp = Replace(rp, "/", "\")
PictureBox1.Image = System.Drawing.Image.FromFile(pa & "\" & rp)
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage

End If
MonReader1.Close()
Connexion.Close()

End Sub

Voila mon code complet, j'espère qu'il pourra servir à quelqu'un qui a les mêmes soucis.
Cette partie là sert à séparer les 2 items de sélections

Dim van As String
van = ComboBox1.Text
Dim b, c As String
b = Split(van, " ")(0)
c = Split(van, " ")(1)

Un grand merci.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
peux-tu alors marquer la discussion comme résolue?
0