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

JSB-24270 Messages postés 26 Statut Membre -  
yg_be Messages postés 23437 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

6 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, comment se comporte le programme que tu nous montres?
    0
  2. 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
  3. 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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je pense alors que tu dois ajouter du code sur un événement de la combobox.
      0
  4. 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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu montrer le code que tu as fait pour traiter l’événement de la combobox?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
    2. 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
      1. 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
      2. 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
  7. 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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu alors marquer la discussion comme résolue?
      0