Vba Access 2016中Dlookup中的变量返回运行时错误13-类型不匹配
逻辑并不复杂。应用程序使用一个临时表,将报表的数据追加到该表中。运行报告后,数据将被清除。最初,客户告诉我,他将立即输入所有数据(通过记录参加活动的人员的出席情况)。现在,情况改变了。我在临时表中查找max ID-如果行数大于0。然后我想使用dlookup让客户知道她在哪里停了下来,以免他们制造更多的问题。 逻辑是这样的:Vba Access 2016中Dlookup中的变量返回运行时错误13-类型不匹配,vba,ms-access,ms-access-2016,Vba,Ms Access,Ms Access 2016,逻辑并不复杂。应用程序使用一个临时表,将报表的数据追加到该表中。运行报告后,数据将被清除。最初,客户告诉我,他将立即输入所有数据(通过记录参加活动的人员的出席情况)。现在,情况改变了。我在临时表中查找max ID-如果行数大于0。然后我想使用dlookup让客户知道她在哪里停了下来,以免他们制造更多的问题。 逻辑是这样的: Dim VMax As Variant Dim VNFind As String VMax = DMax("foodpantryid", "signin_sheet_data
Dim VMax As Variant
Dim VNFind As String
VMax = DMax("foodpantryid", "signin_sheet_data") 'This works correctly
MsgBox VMax 'This works correctly
VNFind = DLookup("last_name", "Dat_household_member", "[household_id]" = VMax) 'I get the type mismatch/error 13 here.
MsgBox VNFind 'so this never works
其他信息:
您已将
=
置于字符串分隔符之外
这意味着:假设你的ID是5。那么参数是“[household\u id]”=5
。这是字符串“[househouse_id]”
和数字5
之间的比较,这会导致类型不匹配,因为除非字符串可以转换为数字,否则无法将字符串与数字进行比较
相反,您应该在字符串中包含=
,并且DLookUp
应该是:
DLookup("last_name", "Dat_household_member", "[household_id] = " & VMax)
或者,更好的方法是使用。这样可以避免大多数类型转换和字符串连接错误
TempVars!VMax = VMax
DLookup("last_name", "Dat_household_member", "[household_id] = TempVars!VMax")
TempVars.Remove "VMax"
您已将
=
置于字符串分隔符之外
这意味着:假设你的ID是5。那么参数是“[household\u id]”=5
。这是字符串“[househouse_id]”
和数字5
之间的比较,这会导致类型不匹配,因为除非字符串可以转换为数字,否则无法将字符串与数字进行比较
相反,您应该在字符串中包含=
,并且DLookUp
应该是:
DLookup("last_name", "Dat_household_member", "[household_id] = " & VMax)
或者,更好的方法是使用。这样可以避免大多数类型转换和字符串连接错误
TempVars!VMax = VMax
DLookup("last_name", "Dat_household_member", "[household_id] = TempVars!VMax")
TempVars.Remove "VMax"
表定义中的
Household\u id
aLarge Number
?如果是这样,我想您必须使用LongLong
VBA变量。在表定义中Household\u id
aLarge Number
?如果是这样的话,我想您必须使用LongLong
VBA变量。太好了,Eric!我没看到完美。谢谢,太好了,埃里克!我没看到完美。非常感谢。