如何在MsAccess 2013中将DLookup从[Form]存储到Table Field?

时间:2017-04-09 07:36:49

标签: forms vba ms-access expression

我有两个MS Access表: IdMhs T_UKT 。我想根据[IdMhs].[SPP]中的某些条件自动填写[T_UKT].[UKT]。我不能把它放在查询关系中,因为无法在表单上编辑行。

所以我创建了一个表单,然后通过使用自动获得了数字 SPP (表单上的文本框),并且工作正常:

=DLookUp("SPP";"T_UKT";"UKT = " & [Form].[UKT])

问题是:查找值只显示在表单上,​​结果未填入表([IdMhs].[SPP])的字段中。

知道我应该写什么表达式来自动填写 IdMhs 表吗?

1 个答案:

答案 0 :(得分:1)

需要宏或VBA代码才能将值保存到表中。如果form绑定到IdMhs表,就像:

Me!SPP = Me.tbxSPP

真正的诀窍是弄清楚将代码放入哪个事件。你有一个控制(可能是组合框),其中选择了UKT值?使用其AfterUpdate事件。

为什么需要保存SPP值而不只是在连接表的查询中检索它?

表关系的本质是什么? T_UKT是查找表吗?如果是这样,那么它应该能够以RecordSource的形式包含它,然后SPP值可以在文本框中显示,而不需要DLookup。域聚合函数可以在表单和报表上执行缓慢,应该是最后的选择。将使用相同的代码来保存值。查询连接应该是'显示来自IdMhs的所有记录,并且只显示来自T_UKT的匹配'的所有记录。将绑定到T_UKT SPP字段的文本框设置为Locked Yes,TabStop No.