我在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]
答案 0 :(得分:2)
正如我在评论中提到的,你必须稍微调整一下你的查询:
=DLookUp("[Level]","[CommunicationTable]","CommunicationNumber= " & DMax("CommunicationNumber","[CommunicationTable]"))
更新
=DLookup("[Level]", "[CommunicationTable]", "CommunicationNumber= " & DMax("CommunicationNumber", "[CommunicationTable]", "[ClientNumber]= " & Me.ClientNumber.Value & ""))