Remplir un datagridview à partir de résultat d'une requete sql

Résolu/Fermé
info254 Messages postés 141 Date d'inscription samedi 2 janvier 2010 Statut Membre Dernière intervention 5 avril 2022 - 8 août 2019 à 11:16
info254 Messages postés 141 Date d'inscription samedi 2 janvier 2010 Statut Membre Dernière intervention 5 avril 2022 - 8 août 2019 à 16:18
Bonjour
je suis en cours de développement d'une petite application de Gestion des missions(VB.NET-- SQL SERVER 2008) ,mais j'ai une problème lors de récupération des données à partir de la base dans une DatagridView en mode connecté avec la boucle While.il affiche à partir de deuxième enregistrements c'est à dire il ne m'affiche pas la première enregistrements
Voici mon code :

Private Sub Buttonverif_mission_Click(sender As Object, e As EventArgs) Handles Buttonverif_mission.Click
If Me.Textnum_mission.Text = "" Then
MsgBox("Veuillez saisir le numero")
Else
command.CommandText = "SELECT * FROM [Ordre_Mission].[dbo].[mission],[Ordre_Mission].[dbo].[destination] WHERE mission.id_mission=destination.num_mission AND mission.id_mission ='" & Me.Textnum_mission.Text & "'"
connection.Open()
Dim myreader As SqlDataReader = command.ExecuteReader()
If myreader.HasRows = True And myreader.Read Then

Me.DataGridViewmod_miss.Enabled = True
Me.DataGridViewmod_miss.Visible = True
Me.Label_chauff.Visible = True
Me.Combochauf.Visible = True
Me.Labelmat_v.Visible = True
Me.ComboBoxmat.Visible = True
Me.Labeldate_depa.Visible = True
Me.Datedep.Visible = True
Me.Labeldate_ret.Visible = True
Me.Dateret.Visible = True
Me.Labelheur_dep.Visible = True
Me.Textheur_dep.Visible = True
Me.Labelheur_ret.Visible = True
Me.Textheur_ret.Visible = True
Me.Labelkm.Visible = True
Me.Textkm.Visible = True
Me.Labelrem.Visible = True
Me.Textrema.Visible = True
Me.Label_num_miss.Visible = True
Me.Labelnum_mis.Visible = True
Me.Labelnote.Visible = True
Me.Labeldep.Visible = True
Me.Combo_dep.Visible = True
Me.Labeldest.Visible = True
Me.Combodest.Visible = True
Me.Label_num_miss.Visible = True
Me.Textnum_mission.Visible = False
Me.Labelnum_miss.Visible = False
Me.Buttonverif_mission.Visible = False
Me.Buttonmodif_miss.Visible = True
Me.Buttoninsert.Visible = True
Me.Buttonquite2.Visible = False
Me.Buttonquit1.Visible = True
Me.Combochauf.Text = myreader(1)
Me.ComboBoxmat.Text = myreader(3)
Me.Datedep.Text = myreader(14)
Me.Textheur_dep.Text = myreader(13).ToString
Me.Labelnum_mis.Text = myreader(0)
Me.Textrema.Text = myreader(5)
Me.DataGridViewmod_miss.Rows.Clear()

While myreader.Read

Me.DataGridViewmod_miss.Rows.Add(myreader(15), myreader(16), myreader(17), myreader(18), myreader(0))

End While
myreader.Close()
connection.Close()
Else
MsgBox("Mission inexistant")
End If
connection.Close()
End If
connection.Close()
'End If
End Sub

1 réponse

yg_be Messages postés 22770 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 mai 2024 1 481
8 août 2019 à 15:09
bonjour, merci d'utiliser les balises de code quand tu postes du code.
si tu veux traiter le premier enregistrement, il est préférable de ne pas faire deux fois
myreader.Read
avant le traitement.
0
info254 Messages postés 141 Date d'inscription samedi 2 janvier 2010 Statut Membre Dernière intervention 5 avril 2022 1
8 août 2019 à 15:16
Bonjour et merci,
non je veux traiter tous les enregistrements mais la boucle m' affiche à partir de deuxièmes enregistrements
0
yg_be Messages postés 22770 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 mai 2024 1 481
8 août 2019 à 15:26
sais-tu ce que fait
myreader.Read
?
0
info254 Messages postés 141 Date d'inscription samedi 2 janvier 2010 Statut Membre Dernière intervention 5 avril 2022 1
8 août 2019 à 15:32
elle m'affiche le résultat mais à partir de deuxièmes enregistrements c'est à dire affiche deuxièmes enregistrements , 3 eme enregistrement ... mais n'affiche pas la 1ere enregistrements comme vous indique l'image
0
info254 Messages postés 141 Date d'inscription samedi 2 janvier 2010 Statut Membre Dernière intervention 5 avril 2022 1
8 août 2019 à 16:18
pbm résolu merci :)
voici le code exécutable :
 Private Sub Buttonverif_mission_Click(sender As Object, e As EventArgs) Handles Buttonverif_mission.Click
If Me.Textnum_mission.Text = "" Then
MsgBox("Veuillez saisir le numero")
Else
'========================================================================================================================
'command.CommandText = "SELECT * FROM [Ordre_Mission].[dbo].[mission] WHERE id_mission ='" & Me.Textnum_mission.Text & "'"==> fonctionne bien
'command.CommandText = "SELECT * FROM [Ordre_Mission].[dbo].[mission],[Ordre_Mission].[dbo].[destination] WHERE mission.id_mission=destination.num_mission AND id_mission ='" & Me.Textnum_mission.Text & "'" 'en marche
command.CommandText = "SELECT * FROM [Ordre_Mission].[dbo].[mission],[Ordre_Mission].[dbo].[destination] WHERE mission.id_mission=destination.num_mission AND mission.id_mission ='" & Me.Textnum_mission.Text & "'"
connection.Open()
Dim myreader As SqlDataReader = command.ExecuteReader()
If myreader.HasRows = True And myreader.Read Then

Me.DataGridViewmod_miss.Enabled = True
Me.DataGridViewmod_miss.Visible = True
Me.Label_chauff.Visible = True
Me.Combochauf.Visible = True
Me.Labelmat_v.Visible = True
Me.ComboBoxmat.Visible = True
Me.Labeldate_depa.Visible = True
Me.Datedep.Visible = True
Me.Labeldate_ret.Visible = True
Me.Dateret.Visible = True
Me.Labelheur_dep.Visible = True
Me.Textheur_dep.Visible = True
Me.Labelheur_ret.Visible = True
Me.Textheur_ret.Visible = True
Me.Labelkm.Visible = True
Me.Textkm.Visible = True
Me.Labelrem.Visible = True
Me.Textrema.Visible = True
Me.Label_num_miss.Visible = True
Me.Labelnum_mis.Visible = True
Me.Labelnote.Visible = True
Me.Labeldep.Visible = True
Me.Combo_dep.Visible = True
Me.Labeldest.Visible = True
Me.Combodest.Visible = True
Me.Label_num_miss.Visible = True
Me.Textnum_mission.Visible = False
Me.Labelnum_miss.Visible = False
Me.Buttonverif_mission.Visible = False
Me.Buttonmodif_miss.Visible = True
Me.Buttoninsert.Visible = True
Me.Buttonquite2.Visible = False
Me.Buttonquit1.Visible = True
Me.Combochauf.Text = myreader(1)
Me.ComboBoxmat.Text = myreader(3)
Me.Datedep.Text = myreader(14)
Me.Textheur_dep.Text = myreader(13).ToString
Me.Labelnum_mis.Text = myreader(0)
Me.Textrema.Text = myreader(5)
Me.DataGridViewmod_miss.Rows.Clear()
myreader.Close()
' =================================================================
command2.CommandText = "SELECT * FROM [Ordre_Mission].[dbo].[mission],[Ordre_Mission].[dbo].[destination] WHERE mission.id_mission=destination.num_mission AND mission.id_mission ='" & Me.Textnum_mission.Text & "'"
Dim myreader2 As SqlDataReader = command2.ExecuteReader()
' If myreader2.HasRows = True And myreader2.Read Then
If myreader2.HasRows Then
While myreader2.Read
Me.DataGridViewmod_miss.Rows.Add(myreader2(15), myreader2(16), myreader2(17), myreader2(18), myreader2(0))
End While
End If


myreader2.Close()
connection.Close()
Else
MsgBox("Mission inexistant")
End If
connection.Close()
End If
connection.Close()
'End If
End Sub
0