Ms access Access 2007未绑定控件在一条记录中更改会影响所有其他记录

Ms access Access 2007未绑定控件在一条记录中更改会影响所有其他记录,ms-access,Ms Access,在记录患者数据时,需要两个要素:主要顾问和其他顾问。一个名为consultant_list的表存储ID、名称、代码和专业。组合允许选择顾问名称,控件将该顾问的ID作为顾问ID存储在表中。选择将自动在窗体上绑定的控件TXTConsultCode和TXTDSpeciality中显示顾问的代码和专业 问题来自另一位顾问。顾问代码和专业的附加绑定控件将自动完成顾问下选择的数据。因此,我使用了未绑定控件txtotherconsultcode和txtOtherSpeciality,并为cboOtherCon

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


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

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


然而,我不相信这是最好的方法。在我看来,您表单的记录源可能是一个加入顾问列表的查询。那么您就不需要
DLookUp()
表达式来拉入txtotherconsultcode和txtOtherSpeciality的值;它们将已经存在于表单的记录源中。您可以将这两个文本框的属性设置为
Enabled=No
Locked=Yes
,这样它们将只显示。。。用户可以通过在cboOtherConsultant中进行不同的选择来更改它们。

一如既往地感谢您的帮助。你把DLoopUp表达式放在控制源中的建议对我来说是很好的,而且我已经锁定了文本框——没有想到这一点。在空白表单上,以DLoopUp为控制源的文本框显示为“Y”错误,直到你为其他顾问选择了一个值,然后它们才完成。有什么办法可以解决这个问题吗?
=DLookUp(“代码”、“顾问列表”、“ID=”&Nz([cboOtherConsultant],0))