逻辑并不复杂。该应用程序使用一个临时表,该表中附加了报告的数据。运行报告后,将清除数据。最初,客户告诉我他将立即输入所有数据(通过参加活动的人员的出席)。现在,情况已经改变。我在临时表中查找最大ID-如果行数大于0。那么我想使用dlookup来让客户端知道她离开的地方,以免造成更多问题。 这是逻辑:
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
其他信息:
答案 0 :(得分:2)
您已将=
放在字符串定界符之外。
这意味着:假设您的ID为5。然后参数为"[household_id]" = 5
。这是字符串"[household_id]"
和数字5
之间的比较,这会导致类型不匹配,因为除非将字符串强制转换为数字,否则您无法将字符串与数字进行比较。
相反,您应该在字符串中包含=
,而DLookUp
应该是:
DLookup("last_name", "Dat_household_member", "[household_id] = " & VMax)
或者,更好的是使用parameters。这样可以避免大多数类型转换和字符串连接错误。
TempVars!VMax = VMax
DLookup("last_name", "Dat_household_member", "[household_id] = TempVars!VMax")
TempVars.Remove "VMax"