我在access数据库中有库存接收表,在这里productID被多次重复。我可以在listview中填充这些数据。当前,当我选择列表视图中的任意一行并按删除按钮时,所选产品id的所有条目都将从listview以及从数据库中从开始到结束被删除。我想要的是,如果我选择列表视图中的任何项目并按删除按钮,只应该删除所选的行表格列表视图和数据库中的所有内容,即使它是相同的产品。如果可以的话,请帮助我吗?请看下面的代码。
Private Sub Button9_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button9.Click
Dim item1 As ListViewItem
item1 = ListView1.SelectedItems(0)
Dim Del As DialogResult
Del = MessageBox.Show("Are you sure you want to delete the record", "Delete Record", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Del = DialogResult.Yes Then
'Dim item As ListViewItem
con.Open()
Dim sql As String = "DELETE FROM Receipt WHERE ProductID='" & item1.SubItems(0).Text & "'"
With cmd
.CommandText = sql
.Connection = con
.ExecuteNonQuery()
End With
MsgBox("Record Removed", MsgBoxStyle.Information)
End If
con.Close()
End Sub发布于 2020-04-21 16:27:00
如果没有看到关于你的背景和设计的所有相关信息,很难确定它能帮助你解决问题,但是有两件事会从你的帖子中跳出来。
您已经声明您的数据库已重复多次ProductID。这可能正是你想要的,但表面上,你可以选择一个ProductID通常是一个唯一的数字的位置。您没有声明ProductID是键字段,但通常ID是唯一的键字段。但这可能会导致多条记录同时被删除,因为.
"DELETE FROM Receipt WHERE ProductID='"特别要求删除记录,不管ProductID规范是什么。因此,使用该ProductID的所有记录都可以被删除。如果你只想删除一条记录,你必须有一个唯一的标识符,是吗?如果只想删除唯一的记录,则需要在ListView中包含唯一的记录标识符(即使隐藏)。
请建议这是否有帮助,或返回一个问题集中在你的问题。
在下面的注释之后添加了:,SQL /命令也需要受到购买订单#的限制。上面的SQL仅基于WHERE ProductID=something进行选择。您还需要根据采购订单号进行选择,以便删除更多唯一的内容。
比如: ProductID=something和PO=something。
https://stackoverflow.com/questions/61325032
复制相似问题