Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : mai 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Remplir un datagridview à partir de résultat d'une requete sql
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    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
    Pièce jointe 496294

  2. #2
    Membre du Club
    Inscrit en
    décembre 2006
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 64
    Points : 56
    Points
    56
    Par défaut
    Bonjour
    je pense que le problème vient du fait de ne pas passer par un dataset. Classiquement ,on récupère le résultat de la requête dans un dataset et c'est le contenu du dataset qui est affiché dans le datagridview.
    Merci si j'ai vous ai été utile.

  3. #3
    Expert éminent

    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2012
    Messages
    4 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2012
    Messages : 4 862
    Points : 9 986
    Points
    9 986
    Billets dans le blog
    34
    Par défaut
    Bonjour,

    M'est avis que pour une raison ou pour une autre, que je n'arrive pas à déceler, ton code ne tient pas compte que la première ligne d'un DGV, d'une table, d'un tableau ou d'une collection c'est la ligne 0 (zéro)
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : mai 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Remplir un datagridview à partir de résultat d'une requete sql
    pbm résolu merci
    voici le code exécutable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    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

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    juillet 2006
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : juillet 2006
    Messages : 3 893
    Points : 4 199
    Points
    4 199
    Par défaut
    Attention avec la concaténation de champ de saisie de type texte dans la requête sql.

    Si j'ai ton application entre les pates, je te vide la DB...

    Regarde du côté des requêtes paramétrées. Ce sera non seulement plus simple à terme pour toi mais surtout plus sûr.
    Kropernic

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/01/2019, 23h04
  2. Réponses: 4
    Dernier message: 04/09/2012, 14h38
  3. remplir un Tableau avec le résultat d'une requête SQL
    Par Jean-Claude Dusse dans le forum ASP.NET
    Réponses: 13
    Dernier message: 23/02/2009, 15h00
  4. Réponses: 8
    Dernier message: 11/08/2006, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo