Access子窗体记录源还原为原始记录源



我有一个Access表单,它有两个子表单,都处于连续模式。由于我不能在连续表单中有一个子表单,所以我不得不这样做(数据表也不是一个选项)

无论哪种方式,当我点击我的第一个子表单时,我都会使用一些相当简单的代码来更改另一个子表单记录源:

Public Sub MAJFiltre(intIdMembership As Integer)
   IdMembershipFiltre = intIdMembership
   Me.RecordSource = "SELECT * FROM T_PeriodeMembershipPartipant WHERE IdPeriodeMembreship=" & IdMembershipFiltre
   Me.Requery
End Sub

此函数是从第一个子窗体调用的。我这样做是为了另一种形式,而且效果很好。对于这一个,如果我使用断点,我可以看到记录源发生了更改,但UI中没有发生任何事情。但是,如果我在BeforeInsert事件中放置断点,我可以清楚地看到记录源正在恢复到原始记录源(没有WHERE子句)

我还注意到一些不寻常的地方:如果我在调试时保存表单代码,突然间,它就工作了。然而,一旦我关闭表单,它就会恢复到"bug"版本。

无论如何,我知道发生了什么,以及如何纠正/预防它吗?

感谢

这听起来类似于我们周期性遇到的一个问题,该问题与链接到具有链接主/子ID的父窗体的子窗体有关:如果您(即Access为您完成了这项工作)无意中将筛选值保存为其中一个子窗体中的属性(通过或在记录源中进行筛选),当您的代码重新分配记录源时,这个保存的值会阻止新的记录源被正确分配,然后msaccess会做它认为最好的事情——在这种情况下,恢复到有效的(以前的)记录源。

检查子窗体中是否存在不需要的数据选项卡属性保存值。

问题可能是您的字段名在查询条件中拼写错误吗?

IdPeriodeMembreship

如果T_PeriodMembershipPartipant表中的字段是IdPeriodMembership而不是IdPeriodmembership,则查询可能会在运行时提示您手动输入参数值。

如果表中确实存在该字段,但在该字段中找不到您在条件中指定的值,则该字段将不返回任何结果,并且第二个子窗体的记录源将设置为空记录集。

最新更新