Raj*_*Raj 1 mysql vb.net datagridview
我需要一个解决方案.我想从一个表中减去/添加一个字段值与另一个表.我正在提供细节.
我有两张桌子(相同的结构).
表1 - purchase 字段:id, purchase_from, product_name, quantity, rate
表2 - sales 字段:id, sale_to, product_name, quantity, rate
现在我想从purchase表到sales表中减去数量,并将数据显示到datagridview中.
我试过了,但都失败了.我给你的代码片段.
Dim PurchasePrdName, SalesPrdName As String
Dim PurchaseQty, SalesQty As Double
Private Sub LoadPurchase()
Try
OpenConnection()
Dim dcommand As New MySqlCommand
Dim qry As String = "SELECT ProductName,SUM(Quantity) FROM stockitems GROUP BY ProductId"
dcommand.Connection = conn
dcommand.CommandText = qry
Dim dbread As MySqlDataReader = dcommand.ExecuteReader
DataGridView1.Rows.Clear()
While dbread.Read
If dbread.HasRows Then
PurchasePrdName = dbread("ProductName").ToString
PurchaseQty = dbread("SUM(Quantity)").ToString
End If
End While
dbread.Close()
Catch ex As Exception
MsgBox(ex.Message)
Finally
CloseConnection()
End Try
End Sub
Private Sub LoadSales()
Try
OpenConnection()
Dim dcommand As New MySqlCommand
Dim qry As String = "SELECT SUM(Quantity) FROM salesitems WHERE ProductName='" & PurchasePrdName & "' GROUP BY ProductId"
dcommand.Connection = conn
dcommand.CommandText = qry
Dim dbread As MySqlDataReader = dcommand.ExecuteReader
DataGridView1.Rows.Clear()
While dbread.Read
If dbread.HasRows Then
SalesQty = dbread("SUM(Quantity)").ToString
End If
End While
dbread.Close()
Catch ex As Exception
MsgBox(ex.Message)
Finally
CloseConnection()
End Try
End Sub
Run Code Online (Sandbox Code Playgroud)
然后将此数据加载到DataGridView中...
Private Sub LoadData()
Try
LoadPurchase()
LoadSales()
Dim PrdName As String = PurchasePrdName
Dim Qty As Double = PurchaseQty - SalesQty
DataGridView1.Rows.Add(PrdName, Qty)
DbGridCustomize()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
但它只显示了表中的一种产品.我很困惑为什么!!!
你能帮帮我吗???
我会非常感谢你
您只向网格添加一行,这是分配给PurchasePrdName的产品.您需要将一组值绑定到网格,或者需要迭代一组值.看起来好像你在这里所做的就是为变量分配一个值,然后在网格中添加一行:
DataGridView1.Rows.Add(PrdName, Qty)
Run Code Online (Sandbox Code Playgroud)
编辑:
我会将您的变量PurchasePrdName和SalePrdName更改为集合,因为您希望在此处存储多个值.
Private PurchasePrdName As Dictionary(Of String, Double)
Private SalesPrdName As Dictionary(Of String, Double)
Run Code Online (Sandbox Code Playgroud)
然后当你加载你的购买和销售时,你会做这样的事情:
While dbread.Read
If dbread.HasRows Then
PurchasePrdName.Add(dbread("ProductName").ToString, dbread("SUM(Quantity)"))
End If
End While
Run Code Online (Sandbox Code Playgroud)
然后,当您进行销售时,您需要遍历产品词典以提取每个产品名称.您可以存储销售数量,但您也可以同时计算差额并存储.创建一个包含所有项目的类并将它们存储在一个字典中可能会更好.
在销售负载中,您将迭代您的字典
For Each product In PurchasePrdName.Keys
Dim qry As String = "SELECT SUM(Quantity) FROM salesitems WHERE ProductName='" & product & "' GROUP BY ProductId"
dcommand.CommandText = qry
Dim dbread As MySqlDataReader = dcommand.ExecuteReader
DataGridView1.Rows.Clear()
While dbread.Read
If dbread.HasRows Then
SalesPrdName.Add(product, PurchasePrdName(product) - Double.Parse(dbread("SUM(Quantity)")))
End If
End While
dbread.Close()
Next
Run Code Online (Sandbox Code Playgroud)
最后你还想在循环中添加行...
For Each product In SalesPrdName.Keys
DataGridView1.Rows.Add(product, SalesPrdName(product))
Next
Run Code Online (Sandbox Code Playgroud)
您可能希望更改变量名称以反映其新的含义等.如果您想存储销售数量,那么我建议您使用一个字典,其中产品名称为关键字,而类别为值.该课程将包括产品名称,产品数量,销售数量以及两者之间的差异.