绑定表单中文本框的默认值

时间:2013-12-17 01:18:22

标签: vba ms-access access-vba ms-access-2010

我在MS Access 2010数据库中有一个数据输入表单,该数据库绑定到名为CommunicationTable的表,该表又包含主键CommunicationNumber,外键ClientNumber,和一个名为Level的字段。当用户打开表单时,ClientNumber会自动填充到名为ClientNumber的文本框中。我希望Level文本框显示一个默认值,该默认值等于Level在指定CommunicationNumber的最新记录(最高ClientNumber值)中记录的值CommunicationTable。我该如何设置?

以下是我目前在表单属性表中Level文本框的默认值表达式构建器中使用的代码:

=DLookUp([Level],[CommunicationTable],[CommunicationNumber]=DMax([CommunicationNumber],[CommunicationTable],[ClientNumber]=[Me].[ClientNumber]))  

当我使用有效的ClientNumber加载表单时,此代码为空值。我认为这可能是由于DMax()函数生成了要添加到CommunicationTable的当前(空白)行,但是当我使用以下代码时,我得到相同的空结果:

=DLookUp([Level],[CommunicationTable],[CommunicationNumber]=DMax([CommunicationNumber],[CommunicationTable],[ClientNumber]=[Me].[ClientNumber])-1 )  

如何更改此表达式,以便为ClientNumber中的指定CommunicationTable提供最新的Level值?


编辑:

我尝试了以下操作,但它出现#type!错误:

=DLookUp("[Level]","[CommunicationTable]","CommunicationNumber= " &  
DMax("CommunicationNumber","[CommunicationTable]","[ClientNumber]=  
" & [Forms]![Main]![NavigationSubform].[Form]![ClientNumber] & ""))  

请注意,表单中的ClientNumber文本框本身是使用表达式填充的:

[Forms]![Main]![NavigationSubform].[Form]![ClientNumber]

1 个答案:

答案 0 :(得分:2)

正如我在评论中提到的,你必须稍微调整一下你的查询:

=DLookUp("[Level]","[CommunicationTable]","CommunicationNumber= " & DMax("CommunicationNumber","[CommunicationTable]"))

更新

=DLookup("[Level]", "[CommunicationTable]", "CommunicationNumber= " & DMax("CommunicationNumber", "[CommunicationTable]", "[ClientNumber]=  " & Me.ClientNumber.Value & ""))