我有一个带有两个子表单的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子句)
我还注意到一些不寻常的事情:如果我在调试时保存表单代码,突然之间就可以了。然而,一旦我关闭表格,它就会恢复到它的“车”#34;版本
无论如何都知道发生了什么以及如何纠正/阻止它?
由于
答案 0 :(得分:1)
这听起来类似于我们定期遇到的问题,它涉及链接到具有链接主/子ID的父表单的子表单:如果您(即Access已经为您完成),则无意中将过滤器值保存为属性在其中一个子表单中(由记录源过滤或在记录源中),当您的代码重新分配记录源时,此保存的值会阻止正确分配新记录源,然后ms访问会执行它认为最佳的记录 - 在此case,恢复到有效(先前)记录源。
检查子表单中是否有不需要的数据选项卡属性保存值。
答案 1 :(得分:0)
问题可能是您的字段名称在查询条件中拼写错误了吗?
IdPeriodeMembreship
如果T_PeriodeMembershipPartipant表中的字段是IdPeriodeMembERship而不是IdPeriodeMembREship,则查询可能会提示您在运行时手动输入参数值。
如果您的表中确实存在该字段,但在该字段中找不到您在条件中指定的值,则它将不返回任何结果,并且第二个子表单的recordsource将设置为空记录集。