我已经在访问数据库中收到了清单库存表,其中productID重复了很多次。我可以在列表视图中填充此数据。当前,当我在列表视图中选择任何行并按Delete键时,从头至尾从列表视图以及数据库中删除所选产品ID的所有条目。[我想要的是,如果我在列表视图中选择任何项目并按Delete键,则即使选定的行是相同的productid,也应该从列表视图中删除选中的行,而不是从数据库中删除所有行。如果有人可以,请帮我吗?请参见下面的代码。
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
没有看到有关您的上下文和设计的所有相关信息,很难确定是否可以帮助您解决问题,但是您的帖子中跳出了两件事。
您已经说过您的数据库具有多次重复的ProductID。那可能正是您想要的,但从表面上看,一个产品ID通常可以是唯一编号。您没有声明ProductID是Key字段,但是通常ID是唯一的key字段。但这可能导致为什么同时删除多个记录,因为...
"DELETE FROM Receipt WHERE ProductID='"
特别要求删除具有任何ProductID规范的记录。因此,所有具有该ProductID的记录都将被删除。如果只希望删除一条记录,则必须具有唯一的标识符,是吗?如果只想删除唯一记录,则即使隐藏也需要包括唯一记录标识符。