【问题标题】:Access 2007 unbound control changed in one record impacts on all othersAccess 2007 未绑定控制在一个记录中更改对所有其他记录的影响
【发布时间】:2012-03-30 14:55:51
【问题描述】:

在记录患者数据时,需要的两个要素是主要顾问和其他顾问。名为consultant_list 的表存储ID、名称、代码和专业。组合允许选择顾问名称,控件将该顾问的 ID 作为顾问 ID 存储在表中。选择自动在表单上的绑定控件中显示顾问的代码和专业,txtConsultantCode 和 txtSpeciality。

问题来自另一位顾问。顾问代码和专业的附加绑定控件自动完成顾问下选择的数据。所以我使用了未绑定的控件 txtOtherConsultantCode 和 txtOtherSpeciality 并为 cboOtherConsultant 设置 AfterUpdate 事件来执行 DLookup() 并填写值。以为效果很好,直到我发现虽然它填写的值正常,但为当前记录输入的值也填写在表单上的任何先前记录中,留下不一致的数据。此外,如果其他顾问名称被清除,未绑定控件中的值仍然存在,因此我在 LostFocus 事件上编写代码以检查 cboOtherConsultant 是否为 Null,如果是,则将关联值也设置为 Null,但这当然也会影响其他记录。救命!

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    您描述了连续表单上的未绑定控件通常会发生什么。由于它们未绑定,因此控件不绑定到当前记录。但是,您可以通过使用 DLookup() 表达式作为这些控件的控件源属性将它们绑定到当前记录。使用这种方法,控件将不再是未绑定的。

    但是,我不相信这是最好的方法。在我看来,您表单的记录源可能是加入 consultant_list 的查询。那么你就不需要DLookUp() 表达式来提取 txtOtherConsultantCodetxtOtherSpeciality 的值;它们已经出现在表单的记录源中。您可以将这 2 个文本框的属性设置为 Enabled = NoLocked = Yes,以便它们仅显示...用户可以通过在 cboOtherConsultant 中进行不同的选择来更改它们。

    【讨论】:

    • 一如既往地感谢您的帮助。您将 DLookup 表达式放在控制源中的建议对我来说效果很好,而且我也锁定了文本框 - 没想到。
    • 在空白表单上,以 DLookup 作为控制源的文本框显示为 #ERROR,直到您为其他顾问选择一个值,然后它们才完成。有没有办法解决这个问题?
    • =DLookUp("code","consultant_list","ID=" & Nz([cboOtherConsultant], 0))
    猜你喜欢
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多