2016-05-13 50 views
0

我有两种子窗体,都处于连续模式的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子句)

我还注意到一些不寻常的事情:如果我在调试时保存表单代码,突然,它工作。不过,只要我关闭表格,它就会恢复到其“错误版”版本。

无论如何都不知道发生了什么以及我如何纠正/阻止它?

感谢

回答

0

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

IdPeriodeMembreship 

如果您T_PeriodeMembershipPartipant表中的字段是IdPeriodeMembERship而不是IdPeriodeMembREship查询可能会提示您在运行时手动输入参数值。

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

+0

该字段名称是正确的。就像我提到的那样,如果我修改代码,那么它就开始工作,但是如果我关闭,它会停止,不管我是否保存。看起来像腐败......我会尝试从头重新创建所有形式,如果一切都失败了。 –

1

这听起来很像我们周期性遭遇的问题,它涉及到链接到具有链接主/子ID的父表单的子表单:如果您(即Access已为您完成)无意中将过滤器值保存为属性(在某个记录源中进行过滤),当代码重新分配记录源时,此保存的值将阻止正确分配新记录源,并且ms访问将执行它认为最好的功能 - 这种情况下,恢复到有效(以前)的记录来源。

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

+0

什么是最佳行动方案?我是否应该重新制作表格以确保没有遗漏?它不是那么大,但是如果这经常发生,它可能会变得烦人。 –

+0

只需清除设计视图中的属性,保存表单,然后在运行时根据需要设置属性 –