vb.net - 请问我添加数量后如何将所有数据链接到另一个datagridview?
问题描述
我面临的一个问题是如何在插入苹果产品数量后链接所有数据信息。例如,我插入苹果产品,它有 5 个数量,我添加 5 后它将变为 10,它将显示产品苹果 10 数量。现在我的代码只显示 10 个数量,它不会显示产品苹果 10 个数量
Private Sub loadTransactions(ByVal transactionid As Integer)
Dim cmd As New OleDb.OleDbCommand
'open connection if it is not open yet
cnn.Open()
cmd.Connection = cnn
If Not cnn.State = ConnectionState.Open Then
'open connection
cnn.Open()
End If
Dim da As New OleDb.OleDbDataAdapter("SELECT s.cid as [ID], c.CheckerName as item_name, " & _
"s.CheckerName as [CheckerName], s.ShipQuantity as [StockQuantity], s.[Date] as [Date], s.CompanyName as [CompanyName], s.CheckerDetail as [CheckerDetail]" & _
" FROM stock s left join checker c on c.cid = s.checkercid where s.checkercid = " & transactionid & " ORDER BY s.cid", cnn)
cmd.CommandText = "INSERT INTO stock([CheckerDetail]) " & "VALUES('" & Me.txtdetail1.Text & "')"
Dim dt As New DataTable
da.Fill(dt)
Me.DataGridView1.DataSource = dt
Me.DataGridView1.Columns("item_name").HeaderText = "ItemName"
'close connection
cnn.Close()
End Sub
product quantity
apple 5
10
解决方案
将数据库对象保存在本地,以便确保它们已关闭和处置。人脉是宝贵的资源。即使有
Using ... End Using
错误,块也会这样做。直到最后一刻才打开连接,并尽快关闭它。将连接字符串传递给连接的构造函数。
将 Sql 字符串和连接传递给命令的构造函数
始终使用参数来防止 Sql 注入并使格式化 Sql 字符串更容易。在 Access 中,参数的名称无关紧要。它们出现在 Sql 字符串中的顺序必须与它们添加到参数集合的顺序相匹配。
我认为你想更新苹果记录而不是插入一个全新的记录。您可以通过 2 种不同的方式执行此操作。一种方法是通过向字段中的现有值添加值来更新数量字段。另一种方法是直接使用新数量进行更新。
Private Sub loadTransactions(ByVal transactionid As Integer)
Dim dt As New DataTable
Using cnn As New OleDbConnection("Your connection string")
Using cmd As New OleDbCommand("SELECT s.cid as [ID],
c.CheckerName as ItemName,
s.CheckerName,
s.ShipQuantity as [StockQuantity],
s.[Date],
s.CompanyName,
s.CheckerDetail
FROM stock s left join checker c on c.cid = s.checkercid
WHERE s.checkercid = @transactionID
ORDER BY s.cid", cnn)
cmd.Parameters.Add("transactionID", OleDbType.Integer).Value = transactionid
cnn.Open()
dt.Load(cmd.ExecuteReader)
End Using
End Using
DataGridView1.DataSource = dt
End Sub
Private Sub UpdateStock(transactionid As Integer)
Using cnn As New OleDbConnection("Your connection string")
Using cmd As New OleDbCommand("Update stock Set CheckerDetail = CheckerDetail + @detail WHERE checkercid = @transactionID;", cnn)
cmd.Parameters.Add("@detail", OleDbType.Integer).Value = CInt(txtdetail1.Text)
cmd.Parameters.Add("@transactionID", OleDbType.Integer).Value = transactionid
cnn.Open()
cmd.ExecuteNonQuery()
End Using
End Using
End Sub
推荐阅读
- google-maps - Flutter-Google Maps API 返回 Null 自动完成预测
- android - 使用 LiveData 而不是常规回调有什么好处吗?
- matlab - matlab如何创建矩阵函数
- python - 我应该如何关闭在不需要它的 multiprocessing.Process 中继承的会话?
- python - python - 如何在具有数据类约束的python中创建TypeVar(通用)类型?
- visual-studio-code - 如何在 vscode 上显示 \n \t 字符
- java - 如何将 CRLF 转换为 \n 字符串
- python - 如何使用 ffmpeg-python 创建动画图像 WebM 文件
- javascript - 加载微调器反应
- python - 如何将第二行设置为 DataFrame 中的列名