在记录患者数据时,需要的两个要素是主顾问和其他顾问。名为consultant_list的表存储ID,名称,代码和专业。组合允许选择顾问名称,控件将该顾问的ID作为consultant_id存储在表中。选择会自动在表单的绑定控件txtConsultantCode和txtSpeciality中显示顾问的代码和专业。
问题来自另一名顾问。顾问代码和专业的附加约束控制自动完成顾问下选择的数据。所以我使用了未绑定的控件txtOtherConsultantCode和txtOtherSpeciality,并为cboOtherConsultant设置AfterUpdate事件来执行DLookup()并填写值。认为这很好,直到我发现尽管它填写了值OK,但为当前记录输入的值也填写在表单上的任何先前记录中,留下不一致的数据。此外,如果清除了其他顾问名称,则未绑定控件中的值仍然存在,因此我在LostFocus事件上编写代码以检查cboOtherConsultant是否为Null,如果是,则将关联值设置为Null,但当然这也会影响其他记录。救命啊!
答案 0 :(得分:0)
您描述了连续表单上未绑定控件通常会发生的情况。由于它们是未绑定的,因此控件与当前记录无关。但是,您可以使用DLookup()
表达式作为这些控件的“控件来源”属性,将它们绑定到当前记录。使用这种方法,控件将不再是未绑定的。
但是,我不相信这是最好的方法。在我看来,您的表单的记录源可能是一个加入 consultant_list 的查询。然后,您不需要DLookUp()
个表达式来提取 txtOtherConsultantCode 和 txtOtherSpeciality 的值;他们已经出现在表格的记录来源中。您可以将这两个文本框的属性设置为Enabled = No
和Locked = Yes
,以便它们仅显示...用户可以通过在 cboOtherConsultant中进行不同的选择来更改它们EM>