none
comment utiliser un datagridview RRS feed

  • Question

  • slt chere auditeur.mon probleme est le suivant:je dois faire un projet qui permet d'etablir une facture pour 1 supermarché.j'ai donc faire une bd sur access que j'ai transporté sur vb studio 2005.sur le formulaire vb jai opté pour 1 datagridview personnalisé qui comportera  id produit, libellé produit,prix unitaire,quantité,prix total.le decor est planté mais je sais pas mettre le code.aidez svp car c'est urgent.merci
    lundi 23 novembre 2009 00:38

Réponses

  • ta pas bien expliqué ton probléme mais si tu veux remplir une datagrid  a partir d'une base donnée il y a deux méthode 
    priérement t doit faire ce code

    dim con as new oledb.oledbconnection
    dim da as oledb.oledbDataAdater
    Dim Ds as new DataSet

    je pense que tu sais comment faire la connexion a la base et aussi remplir la DataSet

    methode1
    me.DataGridProduit.DataSource=Ds.tables("Produit")
    methode2
    For i as integer=0 to Ds.tables("Produit").rows.count-1
    Dim ligne() as string={ds.tables("Produit").rows(i).item(0) ,ds.tables("Produit").rows(i).item(1),ds.tables("Produit").rows(i).item(2) ,.......}
    me.datagridproduit.Rows.add(ligne)
    next
    NB la variable ligne est un tableau
    la methode 1 ne te pemet pas de pérsonaliser la largeur des colonne de DataGridView c'est pour ça je te conseil de faire la deuxieme car des fois il y a des champs Large comme Adresse il tu doit modifier la largeur du colonne pour visualiser tous le champ  
    • Proposé comme réponse MrH.Net lundi 23 novembre 2009 09:29
    • Marqué comme réponse LE_MUFTY samedi 28 novembre 2009 16:27
    lundi 23 novembre 2009 09:23

Toutes les réponses

  • ta pas bien expliqué ton probléme mais si tu veux remplir une datagrid  a partir d'une base donnée il y a deux méthode 
    priérement t doit faire ce code

    dim con as new oledb.oledbconnection
    dim da as oledb.oledbDataAdater
    Dim Ds as new DataSet

    je pense que tu sais comment faire la connexion a la base et aussi remplir la DataSet

    methode1
    me.DataGridProduit.DataSource=Ds.tables("Produit")
    methode2
    For i as integer=0 to Ds.tables("Produit").rows.count-1
    Dim ligne() as string={ds.tables("Produit").rows(i).item(0) ,ds.tables("Produit").rows(i).item(1),ds.tables("Produit").rows(i).item(2) ,.......}
    me.datagridproduit.Rows.add(ligne)
    next
    NB la variable ligne est un tableau
    la methode 1 ne te pemet pas de pérsonaliser la largeur des colonne de DataGridView c'est pour ça je te conseil de faire la deuxieme car des fois il y a des champs Large comme Adresse il tu doit modifier la largeur du colonne pour visualiser tous le champ  
    • Proposé comme réponse MrH.Net lundi 23 novembre 2009 09:29
    • Marqué comme réponse LE_MUFTY samedi 28 novembre 2009 16:27
    lundi 23 novembre 2009 09:23
  • je souhaite que tu m'explique mieux la 2ème methode.je veux que chaque colonne de mon data gridview puisse prendre valeur dans chacune de mes table.exemple code_produit,libellé,prix_unitaire prenne valeur dans ma table article.sur le formulaire vb j'ai mis 1 libellé quantité accompagné d'un textbox.lorsque le client choisira son produit,le cassiere tapera dans le textbox la quantité du produit.dés qu'elle valide ,ça s'enregistre dans la colonne quantité du datagridview.aussi me donner le code pour calculer le total.merci 
    • Marqué comme réponse LE_MUFTY samedi 28 novembre 2009 16:26
    • Non marqué comme réponse LE_MUFTY samedi 28 novembre 2009 16:27
    mercredi 25 novembre 2009 20:37
  • j'ai compris que t'a une DataGridView qui va contenir tous les produits commandés par le client,ce dernier ne vas pas acheté un seul article bien sur 
    alors a chaque fois quand tu ajoute un produit pour le meme client tu doit  ajouter ce enregistrement sous le dernier enregistrement 
    c'est pour ça que tu doit utiliser la 2 eme méthode et voila un exemple
    en suppose  que le caissier choisi les produit a partir d'un Combobox et que la quantité est dans un Textbox
    on a le IdProduit et la quantité il nous faut la libelle et le prix unitaire
    on commence
    le combobox contient les IDArticle et on doit ramené Libelle et Prix de la Table Article a partir de la valeur de Comobobox.selectedItems
    dans l'événemement 
    Private Sub ComboBox1_SelectedIndexChanged
    Dim dr as DataRow
    dim req as string ="Select * from Article where IdArticle=" & val(Combobox1.selectedItems) ' dans le cas ou le type de IdArticle est int
    Da = new oledb.oledDataAdapter(req,connexion)
    da.fill(Ds,"Article")
    for i as integer = 0 to ds.tables("Article").columns.count-1
    dr(i)=ds.tables("Article").rows(0).item(i)
    next
    End Sub
    maintenant 
    D(0)=la valeur de IdArticle et d(1)=la valeur de Libelle et d(3)= la valeur de Prix .......
    on doit  valider  les info qu'on a saisie avec une Button "Valider" pour que ces info s'ajoute dans la DataGrid

    Private Sub Button1_Click
           Dim lig() As String = {Dr(0), Dr(1), Dr(2),TextQuantiteCommande.text}
            DataGridView1.Rows.Add(lig) 
    End Sub

    et tu peux aussi ajouter les produits commandés a partir de la DatagridView si tu utilise ce code
    dim row as DataRow
    For a As Integer = 0 To DataGridView1.Rows.Count - 1
                row = Ds.Tables("ProduitCommandé").NewRow
                row(0) = DataGridView1.Item(0, a).Value
                row(1) = DataGridView1.Item(1, a).Value
                row(2) = DataGridView1.Item(2, a).Value
                row(3) = DataGridView1.Item(4, a).Value
                Ds.Tables("ProduitCommandé").Rows.Add(row)
    Next
    Cmdb = New OleDb.OleDbCommandBuilder(Da)
    Da.Update(Ds, "ProduitCommandé")




    • Proposé comme réponse MrH.Net mercredi 25 novembre 2009 22:58
    mercredi 25 novembre 2009 22:34
  • JE tiens à te remercier pour ton appui.cependant je suis toujours à etape zero car  les codes que tu me donnes contiennent certaines erreurs que je n'arrive pas à décanter.je souhaite qu'on part de pas en pas.je te montre ce que j'ai fais.avant d'utiliser  le datagridview;j'ai utilisé 1 listbox avec un ami .aide moi à transformer le code du listbox par 1 datagridview.ensuite tu m'aidera à calculer le prix de chaque produit  avec la formule prix unitaire* quantite;le prix total = somme des prix.merci
       Private Sub FillBy1ToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Try
                Me.ArticleTableAdapter.FillBy1(Me.Fact_sup_marchéDataSet1.article)
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try

        End Sub

    voici le code que j'ai mi derriere le buton qui valider:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim con As OleDb.OleDbConnection = New OleDb.OleDbConnection
            con.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;data source =C:\Documents and Settings\LEMUFTY\Bureau\fact.mdb"
            Dim muf As OleDb.OleDbCommand = con.CreateCommand
            muf.CommandText = "select * from article WHERE cde_article like '" + ComboBox1.Text + "'"
            Try
                con.Open()
            Catch ex As Exception
                MessageBox.Show("connection impossible" & ex.ToString)
            Finally
                If ComboBox1.Text <> " " Then
                    Dim traducteur As OleDb.OleDbDataReader = muf.ExecuteReader
                    Do While traducteur.Read

                        ListBox1.Items.Add(traducteur.GetString(0) + "    " + traducteur.GetString(1) + "    " + traducteur.GetValue(2).ToString)
                    Loop
                    traducteur.Close()
                    con.Close()
                End If
            End Try
     
    voici le code  que j'ai mis derriere 1 autre bouton valider (pour la quantité):
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim con As OleDb.OleDbConnection = New OleDb.OleDbConnection
            con.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;data source =C:\Documents and Settings\LEMUFTY\Bureau\fact.mdb"
            Dim muf As OleDb.OleDbCommand = con.CreateCommand
            muf.CommandText = "select * from article WHERE cde_article like '" + ComboBox1.Text + "'"
            Try
                con.Open()
            Catch ex As Exception
                MessageBox.Show("connection impossible" & ex.ToString)
            Finally
                If ComboBox1.Text <> " " Then
                    Dim traducteur As OleDb.OleDbDataReader = muf.ExecuteReader
                    Do While traducteur.Read

                        ListBox1.Items.Add(traducteur.GetString(0) + "    " + traducteur.GetString(1) + "    " + traducteur.GetValue(2).ToString)
                    Loop
                    traducteur.Close()
                    con.Close()
                End If
            End Try

    merci et j'attend ton aide


     
    samedi 28 novembre 2009 16:27
  • il faut que tu sais que ce code est testé et j'ai deja fait ce code dans une de mes Applications mais sa ne veux dire pas qu'il faut copier ce code comme il est chaqu'un a sa logique 
    alors tu doit justement  regarder comment j'ai fait et tu le refait de ta propre maniére 
    je veux savoir ou est l'erreur dans mon code
    samedi 28 novembre 2009 17:04
  • dans le code que tu as donné,voici ce que vb souligne:
    & val(Combobox1.selectedItems);
    Da = new oledb.oledDataAdapter(req,connexion);je veux savoir si "connexion " correspond à mon "con";

    dimanche 29 novembre 2009 15:11
  • pour connexion tu la déclare as oledb.oledbCnnexion 
    essaye de remplacer la requette avec ce code
    req=".................... where Id.... ='" & Combobox1.selectedItems & "'"
    dimanche 29 novembre 2009 23:12
  •  excuse moi car je n'avais pas fini ma question.voici ce que j'ai mis dans le combox1:
    con.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;data source =C:\Documents and Settings\LEMUFTY\Bureau\fact.mdb"

            Dim req As String = "Select * from Article where cde_article like '" + ComboBox1.Text + "'"
            da = New OleDb.OleDbDataAdapter(req, con)
            da.Fill(Ds, "Article")
            For i As Integer = 0 To Ds.Tables("Article").Columns.Count - 1
                dr(i) = Ds.Tables("Article").Rows(0).Item(i)
            Next
    pour la ligne dr(i) = Ds.Tables("Article").Rows(0).Item(i);vb me dit que la reference d'objet n'est pas definie a une instance d'objet et me propose d'utiliser new pour créer une instance d'objet.
    dans le bouton_click voici ce que j'ai mis

    Dim lig() As String = {dr(0), dr(1), dr(2), muf.CommandText}
            DataGridView1.Rows.Add(lig)
            For a As Integer = 0 To DataGridView1.Rows.Count - 1
                row = Ds.Tables("ProduitCommandé").NewRow
                row(0) = DataGridView1.Item(0, a).Value
                row(1) = DataGridView1.Item(1, a).Value
                row(2) = DataGridView1.Item(2, a).Value
                row(3) = DataGridView1.Item(4, a).Value
                Ds.Tables("ProduitCommandé").Rows.Add(row)
            Next
    dans le public_form j'ai defini tous les variables
    Dim da As New OleDb.OleDbDataAdapter
        Dim Ds As New DataSet
        Dim dr As DataRow
        Dim con As OleDb.OleDbConnection = New OleDb.OleDbConnection
        Dim muf As OleDb.OleDbCommand = con.CreateCommand
        Dim row As DataRow.
    montre moi ce qui ne tourne pas rond car ça ne marche pas.merci

    dimanche 29 novembre 2009 23:38