怎样在 Datagrid 控件中删除一行 ?
当用户选择控件中的一个记录选择器并按了 DEL 键或 CTL+X 键时,选定的行被删除,而如何用代码在程序中实现呢,还望不吝赐教! 问题点数:100、回复次数:13Top
1 楼zhongminsheng(小生)回复于 2002-04-26 08:03:55 得分 0
核心:
adodc1.recordset.delete
另外在合适的地方加上判断是否有当前记录。Top
2 楼zzq3197(宋兵乙)回复于 2002-04-26 08:13:29 得分 0
Dim response
response = MsgBox("你确定要删除此条记录?", vbYesNo)
If response = vbYes Then
adodc1.Recordset.DeleteTop
3 楼zzq3197(宋兵乙)回复于 2002-04-26 08:16:42 得分 0
Dim response
response = MsgBox("你确定要删除此条记录?", vbYesNo)
If response = vbYes Then
adodc1.Recordset.Delete
以上代码在必要控件的KeyPress事件中添加。
或Top
4 楼zzq3197(宋兵乙)回复于 2002-04-26 08:22:48 得分 0
在keypress事件中
判断keyascii是否为你要求的键,是,执行上述代码。Top
5 楼smilejiangjun(smile将军)回复于 2002-04-26 08:41:47 得分 0
adodc1.recordset.delete
adodc1.recordset.movenextTop
6 楼sngmd(稻草人)回复于 2002-04-26 09:25:19 得分 100
if adodc1.recordset.bof=false and adodc1.recordest.eof=false then
adodc1.recordset.delete
adodc1.recordset.movenext
end if
adodc1.recordset.bof=false and adodc1.recordest.eof=false
是为了防止数据库为bof或者eof状态,就是数据库指针在
最开始或者最后的位置,删除这两个位置相当于没有记录的,
删除时会出错!
如果加入确认机制就是:
Dim response
if adodc1.recordset.bof=false and adodc1.recordest.eof=false then
response = MsgBox("你确定要删除此条记录?", vbYesNo)
If response = vbYes Then
adodc1.recordset.delete
adodc1.recordset.movenext
end if
end if
以上代码在必要控件的KeyPress事件中添加。
如果再要复杂点,就是更安全一点,像上面的代码
实现的情况是确认按钮是默认的,而取消按钮不是默认的,
防止用户以回车键错选确认可以这样修改,使取消按钮
变为默认,这样更好!更安全!
给你一段代码,自己研究吧!
'释放窗体前确认过程
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim response As Integer
Dim MsgStyle As Integer
Dim msg As String
msg = "确定退出?" + Chr(13) + "选择“是”"
msg = msg + "将彻底退出自动广播系统" + Chr(13) + Chr(13)
msg = msg + "选择“否”将取消退出操作"
MsgStyle = vbYesNo + vbCritical + vbQuestion + _
vbDefaultButton2 + vbApplicationModal
response = MsgBox(msg, MsgStyle, "操作提示")
If response = vbOK Then
End
ElseIf response = vbNo Then
Cancel = 1
End If
End Sub
给分啊!
哈哈!Top
7 楼Boible()回复于 2002-04-26 15:15:07 得分 0
感谢以上各位!
以上各位的做法也对,但我的体会是在使用 DataGrid 控制和操作数据库时,如果再去直接用代码操作数据库在很多时候会不稳定,
比如我们在 DataGrid 中修改数据,就不能再用下面的代码去操作数据库
adodc1.recordset .fields("A1") = "aaaa "
adodc1.recordset .fields
我也是用以上各位的方法去做数据库记录的删除的,执行中不太理想,我的做法如下
If Adodc6.Recordset.RecordCount > 1 Then
Adodc6.Recordset.MoveLast
Do While Not Adodc6.Recordset.EOF
Adodc6.Recordset.Delete
Adodc6.Recordset.MovePrevious
i = i + 1
Loop
Adodc6.Refresh
End If
在 DataGrid 中有没有类似 MSHFlexGrid 的 Remove 方法去删除一行记录呢?
望各位不吝赐教!必当重谢!
Top
8 楼wangluoxing(最后一天)回复于 2002-04-26 21:34:45 得分 0
你这种方法不能删除指定的记录,而是全不的所有的记录。这行吗?
datagrid中的delete与mshflexgrid 中的remove是一样的功能,都可以删除
记录Top
9 楼Boible()回复于 2002-04-26 23:28:02 得分 0
楼上的你好,谢谢!
我的示例代码是想删除全部的记录的。
delete 不是 datagrid 的方法或属性,是ado 的。
我想知道 datagird 本身有没有删除功能。
Top
10 楼sngmd(稻草人)回复于 2002-04-27 21:58:51 得分 0
楼上的,datagird是有删除功能的,
你在datagird上单击右键,选择属性...,
会出现属性页,通用的那一页上的左侧有几个
选项:允许添加、允许删除等等!
自己看吧!
Top
11 楼Boible()回复于 2002-04-28 03:35:22 得分 0
稻草人,
你讲的那些, 三岁小孩都知道的!
不过还是要说句谢谢你!Top
12 楼Boible()回复于 2002-04-29 18:12:00 得分 0
稻草人
我的问题虽然没有得到满意的答案,不过在众说纷纭中,我决定把100分全给你,希望以后能有所合作!Top
13 楼sngmd(稻草人)回复于 2002-05-14 14:52:10 得分 0
谢谢!
Top




