当数据发生变化时,在表单上更新表达式,例如Dlookup

时间:2014-05-05 21:03:30

标签: ms-access

我正在使用Access 2010,我想要做的是将表单中的两个字段连接在一起。第一个字段是组合框(TypeCombo),另一个是文本框(PeriodText)。我需要做的是当用户从TypeCombo中选择一个选项时,它将使用正确的句点填充PeriodText。

从我所看到的最简单的方法是使用提供的= DLookup函数。哪个给了我这些问题。我目前的DLookUp代码是:

=DLookUp("[Type_Name]","Type"," [TypeCombo] =" & [Forms]![Form1]![TypeCombo])  

我当前的组合框代码是:

SELECT Type.Period_ID AS Expr1, Type.Type_Name AS Expr2
FROM Type
ORDER BY Type.Type_Name;

所以假设发生的是选择我需要能够获得Period_ID的类型,然后在文本框中我想使用Period_ID来选择正确的句点。当表单加载时,它会给我列表中第一项的Expr1,但是当我更改它时它不会更新。

如何使用组合框中的新数据更新dlookup?

2 个答案:

答案 0 :(得分:0)

TypeCombo' AfterUpdate事件中:

Me.Requery

这会更新控件中使用的所有查询和dlookup等。

答案 1 :(得分:0)

E Mett,我想感谢你的回复,但我发现另一个对我来说也很有效,并且做了我需要的。我理解你的工作是如何工作的,但当我尝试编码时,我可能无法让它为我工作。

我最终看到的是我文本字段的焦点控制。我使用了组合框的第一列并将其提供到dlookup中,然后我可以设置字段的文本,只要它发生变化。我知道它不会自动显示,但最后我仍然可以获得正确的信息来保存。这就是我最终做的事情:

Strg333 = Me.TypeCombo.Value
VarX = DLookup("[Period.Period]", "Period", "[Period.Period_ID] =" & Strg333)
If PeriodText.Locked = True Then
PeriodText.Locked = False
End If
PeriodText.Text = VarX
PeriodText.Locked = True

我有锁在那里,所以没有人可以改变任何值,它的设计理念,我可能最终只是删除。