weixin_43539387 2020-02-04 09:21 采纳率: 0%
浏览 332

VB中MSHFlexGrid控件中选择记录删除不了选中的记录而是删除了第一条记录?

Private Sub Command2_Click()
Adodc1.RecordSource = "select * from 常用联系电话表 where 名称=" & MSHFlexGrid1.TextMatrix(MSHFlexGrid1.MouseRow, 0)
Adodc1.Recordset.Delete

MSHFlexGrid1.RemoveItem MSHFlexGrid1.Row
End Sub


## 怎么才能删除选择的记录内容呢?这个代码只能表面上看似删除了但是数据库能的内容删除的是第一条记录!求问题所在?
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-26 04:00
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Visual Basic 中,RecordSet.Delete 方法会直接删除选定行的数据。然而,在你的情况下,如果只是删除第一条记录,那么 RecordSet.Delete 将不会影响到其他未被选择的行。

    要解决这个问题,你可以使用以下方法:

    1. 设置记录源: 在 Command2_Click 事件处理程序中,将 Adodc1.RecordSource 设置为一个包含所有数据的查询语句(例如:select * from 常用联系电话表)。这样可以确保在删除时也会删除所有其他行。

    2. 使用 Select Method 删除记录: 使用 Select Method 来删除选择的行,并结合 Remove Item 以确保正确地删除所选行。这将避免意外地删除第一条记录。

    3. 更新记录源和绑定 Grid: 更新 Adodc1.RecordSource 以反映新查询结果,并重新绑定网格以显示更改后的数据。

    下面是实现这些功能的示例代码:

    Private Sub Command2_Click()
        ' 设置记录源
        Adodc1.RecordSource = "SELECT * FROM 常用联系电话表"
    
        ' 删除并移除第一行
        Adodc1.Recordset.Delete
        MSHFlexGrid1.RemoveItem MSHFlexGrid1.Row
    End Sub
    

    这段代码首先设置记录源为包含所有数据的查询语句。然后,通过 Recordset.Delete 条件性地删除记录,同时通过 Remove Item 操作来确保正确地移除了第一条记录。最后,更新 Adodc1.RecordSource 以反映新的查询结果,并重新绑定网格以显示更改后的数据。

    评论

报告相同问题?