【问题标题】:Deleting/Adding records on a subform that has a similar record source of the main form在具有与主窗体相似记录源的子窗体上删除/添加记录
【发布时间】:2015-06-06 02:49:03
【问题描述】:

我正在尝试制作一个与拆分表单类似的子表单。

我会使用 splitform,但据我所知,我不能只过滤拆分表单的数据表部分的结果,而不能过滤其余部分的结果。 看这里...

subformPartDetail 仅返回 OrderID 等于主窗体的 OrderID 的记录。主窗体中没有过滤器,因此无论 OrderID 是什么,它都会返回所有 partDetail 记录。在这个特定的例子中,主窗体有 21 条记录要循环,而子窗体只有 4 条。

当我使用子表单添加或删除记录时出现问题。当我尝试使用主窗体循环浏览记录时,添加的记录被跳过,删除的记录抛出错误,告诉我我试图去的记录已被删除。 我通过将这些放在子表单事件上来纠正它......

Private Sub Form_AfterInsert()
Dim frm As Form
Dim rst As Recordset
Set frm = Forms!PartDetails
Set rst = frm.Recordset

rst.Requery
End Sub

Private Sub Form_Delete(Cancel As Integer)
Dim frm As Form
Dim rst As Recordset
Set frm = Forms!PartDetails
Set rst = frm.Recordset

rst.Requery
End Sub

但是假设我尝试从子窗体中删除主窗体正在显示的记录。该代码不起作用,也不会重新查询。当我循环离开然后返回该记录时,它会引发错误。

我该如何解决这个问题?

我知道我可以在删除之前将记录从已删除的记录中移动

 rst.move

我不知道从哪里开始测试正在删除的记录是否与主窗体正在显示的记录相同。

【问题讨论】:

    标签: forms ms-access vba


    【解决方案1】:

    也许我没有正确理解这种情况,但应该不需要 VBA 来实现这一点。如果子表单将链接主字段和链接子字段与您的子表单一起使用,则这些 ID 将自动工作。如果您在两个表之间建立了关系,如果您删除了订单记录(并选择了强制引用完整性:级联删除),它应该自动清除行项目以避免孤立记录。

    【讨论】:

    • 子表单和主表单都是从同一个记录集中提取的。两者都可以在同一记录集中添加和删除记录。
    • 虽然设置了链接子字段和主字段,但子表单下加删除命令时,主表单不会重新查询。
    • 对不起,我误解了。也许您应该使用单独的查询来提取子表单数据。
    • 是的,我想。子表单的记录源(本身是一个查询,对吗?)与主表单的记录源不同。只是他们都从同一张表 PartDetails 中提取。
    • 好的。嘘。您是在处理机密内容,还是能够发送文件副本?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多