用DataGrid控件和Ado结合,对Datagrid控件中的数据进行删除,如果删除时不是选中整行,而是让光标停在某行的某个单元格内时点击删除,这

ywxbutterfly 2003-08-22 01:31:19
用DataGrid控件和Ado结合,对Datagrid控件中的数据进行删除,如果删除时不是选中整行,而是让光标停在某行的某个单元格内时点击删除,这个时候就会出现错误提示:“行句柄引用了一个已被删除的行或被标识为删除的行”,哪位高人愿意帮忙,万分感谢!
...全文
35 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingming81 2003-08-22
  • 打赏
  • 举报
回复
用ADODB对象来绑定,在回车键中删除,不出错。
qingming81 2003-08-22
  • 打赏
  • 举报
回复
说服你的用户:)
qingming81 2003-08-22
  • 打赏
  • 举报
回复
I am sorry! 回车是最方便的。但如果用户不这样,datagrid是有麻烦!
sbwgi 2003-08-22
  • 打赏
  • 举报
回复
我们可以按回车删除,可是用户怎么会那么听话呢!
rednod 2003-08-22
  • 打赏
  • 举报
回复
学习
qingming81 2003-08-22
  • 打赏
  • 举报
回复
我做时间都在keypress中按回车删除,用光标键定位,不会出错。
qingming81 2003-08-22
  • 打赏
  • 举报
回复
还要建议将删除代码写在keypress中,按回车删除,不要使用鼠标。鼠标点击时,它会存在一个问题:它执行是点击前一那一行,而不你点击的目标行!比如原来光标在最后一行(特别是带*的那一行),你这时点击删除第一行,其实代码执行地是删除那个最后一行(如果光标正在带*的那一行,由于此带*的行是不存在的,也就会出现你的错误提示)。

可以先测试
datagrid1_click中加代码:
Dim i As Integer

On Error GoTo handler
DataGrid1.SetFocus

If DataGrid1.Row = -1 Then
MsgBox "最后一行"
Else
MsgBox DataGrid1.Row
End If

' For i = 0 To 2
' MsgBox DataGrid1.Columns.Item(i) ' RowArray(i) = DataGrid1.Columns.Item(i)
' Next i
Exit Sub
handler:
Exit Sub

先把光标置于最后一行,再点击倒数第二行,看看结果就知道了:提示:row handle referred to a deleted row or a row marked for deletion(中文就是你的那个提示)。
qingming81 2003-08-22
  • 打赏
  • 举报
回复
你删除时没有刷新,鼠标可能又点击了一次删除,结果就是这样!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧