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

Fermé
JSB-24270 Messages postés 24 Date d'inscription jeudi 26 mars 2020 Statut Membre Dernière intervention 9 mai 2020 - 8 avril 2020 à 19:40
yg_be Messages postés 23310 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 novembre 2024 - 9 avril 2020 à 21:35
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 23310 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 novembre 2024 Ambassadeur 1 551
8 avril 2020 à 20:49
bonjour, comment se comporte le programme que tu nous montres?
0
Utilisateur anonyme
8 avril 2020 à 20:57
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
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 23310 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 novembre 2024 1 551
9 avril 2020 à 08:50
je pense alors que tu dois ajouter du code sur un événement de la combobox.
0
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 23310 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 novembre 2024 1 551
9 avril 2020 à 13:54
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
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 23310 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 novembre 2024 1 551
9 avril 2020 à 17:53
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
9 avril 2020 à 20:15
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
Modifié le 9 avril 2020 à 20:20
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
9 avril 2020 à 21:15
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
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 23310 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 novembre 2024 1 551
9 avril 2020 à 21:35
peux-tu alors marquer la discussion comme résolue?
0