Meilleur auteur de réponses
comment utiliser un datagridview

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
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éthodepriérement t doit faire ce codedim con as new oledb.oledbconnectiondim da as oledb.oledbDataAdaterDim Ds as new DataSetje pense que tu sais comment faire la connexion a la base et aussi remplir la DataSetmethode1me.DataGridProduit.DataSource=Ds.tables("Produit")methode2For i as integer=0 to Ds.tables("Produit").rows.count-1Dim 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)nextNB la variable ligne est un tableaula 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
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éthodepriérement t doit faire ce codedim con as new oledb.oledbconnectiondim da as oledb.oledbDataAdaterDim Ds as new DataSetje pense que tu sais comment faire la connexion a la base et aussi remplir la DataSetmethode1me.DataGridProduit.DataSource=Ds.tables("Produit")methode2For i as integer=0 to Ds.tables("Produit").rows.count-1Dim 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)nextNB la variable ligne est un tableaula 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
-
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
-
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 suralors a chaque fois quand tu ajoute un produit pour le meme client tu doit ajouter ce enregistrement sous le dernier enregistrementc'est pour ça que tu doit utiliser la 2 eme méthode et voila un exempleen suppose que le caissier choisi les produit a partir d'un Combobox et que la quantité est dans un Textboxon a le IdProduit et la quantité il nous faut la libelle et le prix unitaireon commencele combobox contient les IDArticle et on doit ramené Libelle et Prix de la Table Article a partir de la valeur de Comobobox.selectedItemsdans l'événemementPrivate Sub ComboBox1_SelectedIndexChangedDim dr as DataRowdim req as string ="Select * from Article where IdArticle=" & val(Combobox1.selectedItems) ' dans le cas ou le type de IdArticle est intDa = new oledb.oledDataAdapter(req,connexion)da.fill(Ds,"Article")for i as integer = 0 to ds.tables("Article").columns.count-1dr(i)=ds.tables("Article").rows(0).item(i)nextEnd SubmaintenantD(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 DataGridPrivate Sub Button1_ClickDim lig() As String = {Dr(0), Dr(1), Dr(2),TextQuantiteCommande.text}DataGridView1.Rows.Add(lig)End Subet tu peux aussi ajouter les produits commandés a partir de la DatagridView si tu utilise ce codedim row as DataRowFor a As Integer = 0 To DataGridView1.Rows.Count - 1row = Ds.Tables("ProduitCommandé").NewRowrow(0) = DataGridView1.Item(0, a).Valuerow(1) = DataGridView1.Item(1, a).Valuerow(2) = DataGridView1.Item(2, a).Valuerow(3) = DataGridView1.Item(4, a).ValueDs.Tables("ProduitCommandé").Rows.Add(row)NextCmdb = New OleDb.OleDbCommandBuilder(Da)Da.Update(Ds, "ProduitCommandé")
- Proposé comme réponse MrH.Net mercredi 25 novembre 2009 22:58
-
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
-
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 logiquealors tu doit justement regarder comment j'ai fait et tu le refait de ta propre maniéreje veux savoir ou est l'erreur dans mon code
-
-
-
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