Office中国论坛/Access中国论坛

标题: [求助]如何用ADO方法批量删除子窗体中选定的记录 [打印本页]

作者: shenlan    时间: 2006-6-5 10:31
标题: [求助]如何用ADO方法批量删除子窗体中选定的记录
请问怎么样可以实现用鼠标选中子窗体中的一条或多条记录后点击按钮即可将其删除.

在ACCESS的工具栏中的记录删除按钮有这个功能,但用向导作出的按钮每次只能删除一条记录.

我用ADO方法只会删除所有记录或者根据某一条件删除记录

请高手指点迷津,关键是不知道ADO操作中用什么属性可以判断记录是否被选中了.

谢谢大家![em07]
作者: wuaza    时间: 2006-6-5 19:37
请研究一下这篇文章,会对你有帮助的。

http://www.access911.net/fixhtm/71FAB01E11DC.htm?tt=
作者: andymark    时间: 2006-6-5 19:57
把自已实际碰到的问题,做个简单的例子

别人更容易帮你
作者: shenlan    时间: 2006-6-5 23:50
谢谢斑竹提醒,

wuaza指点的例子已经看了,正在学习中,但有些代码还是看不明白,没办法,麻袋片绣花_底子太差,

所以还是按斑竹的吩咐传上一个模板来,请给改一下.

[attach]18283[/attach]


[此贴子已经被作者于2006-6-5 17:35:03编辑过]


作者: wu8313    时间: 2006-6-6 01:37
删除某行记录和连续的某些行记录,直接使用 菜单命令就可以了。

关键问题就是如何 删除 使用ctrl键跳跃选中的行?

当然使用代码是可以实现的了。

==========================================

这个例子是别人写的,作者不祥。

这个过程中的代码可以 偷来 用用的:

Private Sub List30_AfterUpdate()

这个过程是select ,我们就可以变通使用 delete 了。

=======================================

[attach]18294[/attach]


[此贴子已经被作者于2006-6-5 19:59:54编辑过]


作者: wuaza    时间: 2006-6-6 03:36
注意,是子窗体,不是列表框。
作者: wu8313    时间: 2006-6-6 03:59
以下是引用wuaza在2006-6-5 19:36:00的发言:


注意,是子窗体,不是列表框。



那就直接使用列表框吧。看来只有 列表框 才有使用ctrl键跳跃选中的功能。好像 子窗体 不支持ctrl键跳跃选中记录功能。


我更改别人代码后的例子,上传在 5 楼。

[此贴子已经被作者于2006-6-5 20:04:53编辑过]


作者: andymark    时间: 2006-6-6 04:24
以下是引用wu8313在2006-6-5 19:59:00的发言:





那就直接使用列表框吧。看来只有 列表框 才有使用ctrl键跳跃选中的功能。好像 子窗体 不支持ctrl键跳跃选中记录功能。


我更改别人代码后的例子,上传在 5 楼。



    子窗体没有跳跃选中的功能。如果一定要在子窗体,可以考虑在子窗体增加一个是否删除的字段
作者: shenlan    时间: 2006-6-6 10:48
其实,我需要的并不一定要跳跃选中,连续选中就可以了,关键是想学习用代码实现记录删除的方法,我现在很需要这个功能.

谢谢各位,教教俺吧
作者: shenlan    时间: 2006-6-7 02:39
自己顶一下,请斑竹尽快出手
作者: wu8313    时间: 2006-6-7 04:53
Sub delete_recorder()
'第一、如下代码写在子窗体的删除前的事件代码中
'在本例中,为了调用的方便,暂且放在标准模块中

'第二、当然,要确保“选项”中“记录更改”复选框的被选中
'可以使用代码来达到这个选项设置的更改,方法如下:
'With Application
' .SetOption "确认记录更改", true
'End With
'否则,自定义的对话框将不会出现,删除记录后也将没有任何提示
'==============================================================

Response = MsgBox("真的删除这些人员记录?" + vbNewLine + "记录删除后将无法恢复,慎重选择", 4 + 32 + 256, "提示")
If Response = vbYes Then

DoCmd.setwarnings warningsoff
DoCmd.RunCommand acCmdDelete
DoCmd.setwarnings warningsoff

Else

DoCmd.CancelEvent

End If
End Sub

=====================

使用子窗体的 行选择器 选中 某条或者某些条记录(只能连续) 后,在系统右键菜单中使用 "删除记录"命令可以看到效果。

不过,这个方法不是使用ado的方法,和你的标题有些不一致。ado的方法,我是偷用别人的代码改装的,只能使用列表框来接纳数据。因为列表框可以跳跃选中和删除,我更赞成使用列表框。[attach]18346[/attach]


[此贴子已经被作者于2006-6-6 20:59:43编辑过]


作者: shenlan    时间: 2006-6-7 12:32
谢谢你,热心的蝙蝠侠

您上面说到的方法,好象系统本身就有这个功能啊.即使不用上面你给出的代码,同样可以做到

如果我禁止了快捷菜单,和工具栏的话,就不能用了.所以我想在自己作出的窗体上放置一个删除按钮来达到同样的功能,有办法吗?最好是ADO方法的,因为我这段时间正在钻研这玩意.当然其他方法也可以

谢谢大家,添麻烦了[em04][em04][em04][em04]
作者: wu8313    时间: 2006-6-8 02:07
引用12楼的话:

“如果我禁止了快捷菜单,和工具栏的话,就不能用了.所以我想在自己作出的窗体上放置一个删除按钮来达到同样的功能,有办法吗?最好是ADO方法的,因为我这段时间正在钻研这玩意.当然其他方法也可以”

你可以使用子窗体的自定义快捷菜单来完成删除操作,和 禁止了系统快捷菜单和系统工具栏没有关系。

================

关于ado的方法,使用列表框的那个例子不可以吗?

[此贴子已经被作者于2006-6-7 18:10:51编辑过]


作者: shenlan    时间: 2006-6-11 09:30
酸了,解决不了了
作者: andymark    时间: 2006-6-11 18:21
可以解决,这跟今期的竟赛题原理一样的

http://www.office-cn.net/forum.php?mod=viewthread&tid=40873
作者: qlm    时间: 2006-6-12 04:42
就算有用,如果不行,还是换个方法吧。

其实我也想知道,以前好象也试过想了解这个功能。

等着瞧吧,看有没有人知道。
作者: shenlan    时间: 2006-6-18 09:11
期待能尽快看到andymark版主的源码
作者: shenlan    时间: 2006-7-6 06:37
这个问题还没有解决,请大家帮忙
作者: XWQ2000    时间: 2006-10-22 08:16
111
作者: sgrshh29    时间: 2006-10-22 15:25
如果不使用ado,直接在access中操作,有一个及其简单的方法,一句代码。不过子窗体只有连续选中,没有隔行选中的。谁会隔行选中子窗体中的记录?????[em06][em06][em06]

[此贴子已经被作者于2006-10-22 7:27:54编辑过]


作者: wansong2008    时间: 2009-11-6 12:41
xuexiyixia
作者: dbbygzy    时间: 2010-4-17 20:41
学习




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3