仅从Access数据库中删除选定的ListView项

问题描述 投票:0回答:1

我已经在访问数据库中收到了清单库存表,其中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
vb.net winforms listview ms-access
1个回答
0
投票

没有看到有关您的上下文和设计的所有相关信息,很难确定是否可以帮助您解决问题,但是您的帖子中跳出了两件事。

您已经说过您的数据库具有多次重复的ProductID。那可能正是您想要的,但从表面上看,一个产品ID通常可以是唯一编号。您没有声明ProductID是Key字段,但是通常ID是唯一的key字段。但这可能导致为什么同时删除多个记录,因为...

"DELETE FROM Receipt WHERE ProductID='"特别要求删除具有任何ProductID规范的记录。因此,所有具有该ProductID的记录都将被删除。如果只希望删除一条记录,则必须具有唯一的标识符,是吗?如果只想删除唯一记录,则即使隐藏也需要包括唯一记录标识符。

© www.soinside.com 2019 - 2024. All rights reserved.