Remplir un datagridview à partir de résultat d'une requete sql [Résolu]

Signaler
Messages postés
143
Date d'inscription
samedi 2 janvier 2010
Statut
Membre
Dernière intervention
8 août 2019
-
Messages postés
143
Date d'inscription
samedi 2 janvier 2010
Statut
Membre
Dernière intervention
8 août 2019
-
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

Messages postés
11462
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
655
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.
Messages postés
143
Date d'inscription
samedi 2 janvier 2010
Statut
Membre
Dernière intervention
8 août 2019
1
Bonjour et merci,
non je veux traiter tous les enregistrements mais la boucle m' affiche à partir de deuxièmes enregistrements
Messages postés
11462
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
655
sais-tu ce que fait
myreader.Read
?
Messages postés
143
Date d'inscription
samedi 2 janvier 2010
Statut
Membre
Dernière intervention
8 août 2019
1
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
Messages postés
143
Date d'inscription
samedi 2 janvier 2010
Statut
Membre
Dernière intervention
8 août 2019
1
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