Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 如何确定要删除哪些记录?_Ms Access_Vba - Fatal编程技术网

Ms access 如何确定要删除哪些记录?

Ms access 如何确定要删除哪些记录?,ms-access,vba,Ms Access,Vba,编辑-如莱夫所问: 当用户从数据表视图中删除多条记录时,我希望能够在VBA事件例程中确定要删除的记录。我需要这些信息来删除文件服务器上的一些关联文件。如果只删除一条记录,我不会有问题,因为它将是当前记录。但是如果删除了多个记录呢?此列表是否在VBA事件过程中的某个位置可用 Form_Delete事件的问题在于,当MS Access尝试删除选定行时,会触发该事件,如果由于某种原因(关系等)而失败,则会弹出错误消息和/或确认对话框。如果用户按“取消”,则删除的记录会“神奇地”返回。我没有找到追踪哪些

编辑-如莱夫所问: 当用户从数据表视图中删除多条记录时,我希望能够在VBA事件例程中确定要删除的记录。我需要这些信息来删除文件服务器上的一些关联文件。如果只删除一条记录,我不会有问题,因为它将是当前记录。但是如果删除了多个记录呢?此列表是否在VBA事件过程中的某个位置可用

Form_Delete
事件的问题在于,当MS Access尝试删除选定行时,会触发该事件,如果由于某种原因(关系等)而失败,则会弹出错误消息和/或确认对话框。如果用户按“取消”,则删除的记录会“神奇地”返回。我没有找到追踪哪些被删除,哪些没有的方法

Form_AfterDelConfirm
在确认后运行一次,无法访问已删除的记录集合


我所需要的只是一个记录ID的集合,它实际上已被删除。

将所有可能已删除的记录存储在一个集合中,然后与表单的记录集进行比较:

Private PossiblyDeleted为新集合“模块级集合”
私有子表单_Delete(取消为整数)
'如果集合不存在,则创建该集合
可能已删除。添加Str(Me!ID)'存储每个ID
端接头
私有子表单\u AfterDelConfirm(状态为整数)
如果状态=0,则“如果按下是”
Dim RecID作为变体
将遥感器作为记录集
Set RS=Me.Recordset.Clone
对于通过集合的“可能已删除”循环中的每个RecID
RS.FindFirst(“ID=”&RecID)
如果是RS.NoMatch,则为“然后查看删除了什么”
'在此处执行操作
调试。打印RecID
如果结束
下一个
如果结束
Set-PossiblyDeleted=Nothing'删除集合
设置RS=无
端接头

正如上面提到的C Perkins-当用户禁用确认时,这可能不起作用。我想它可以通过
DoCmd.SetWarnings True

启用。@CPerkins我已经完全重写了我的问题,因为它有点混乱。我希望现在好多了。你不能用一个带有点击事件的自定义按钮来删除吗?然后,您可以对所选记录进行Itrate并保留IDs@SiyonDP-这很复杂,看。另外,我不想为内置的东西开发自己的代码。也许我只是失踪了something@Combinatix你没有遗漏任何东西。Access数据模型通常具有不完整的方法和事件。必须执行愚蠢的杂耍动作才能捕获并对界面中选定的行执行动作。顺便说一句,注意在访问选项中可以抑制AfterDelConfirm。因此,通过设置UI选项,它可以阻止开发人员正确处理数据事件的能力!