vba - Access 2016 中的 Dlookup 中的变量返回运行时错误 13 - 类型不匹配
问题描述
逻辑并不复杂。该应用程序使用一个临时表,其中附加了报告的数据。运行报告后,数据将被清除。最初,客户告诉我,他将输入所有数据(通过参加活动的人的出席情况)将立即完成。现在,情况发生了变化。我在临时表中查找最大 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
附加信息:
- Household_id 是一个长整数。当我将其更改为整数时,我收到错误 94(无效使用 null)。
- 我尝试将 VMax 设置为变体、整数和长整数。仍然没有成功。我认为变体会起作用。
- 如果我不包含“[household_id]”= VMax,则 DLookup 有效。
- 我尝试在“”中包含 =VMax,但也失败了。这会产生 2471 错误。
解决方案
您已将=
字符串分隔符放在外面。
这意味着:假设您的 ID 是 5。那么参数是"[household_id]" = 5
。"[household_id]"
这是 string和 number之间的比较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"
推荐阅读
- c# - WPF - 设置 DataContext 极大地增加了计算时间
- javascript - 检查用户是否对 Google Drive URL 具有“编辑权限”
- python - 如何将一个数字作为输入并在 Python 中打印一个浮点数直到该小数点
- java - iText7 LtvVerification.addVerification 未启用 LTV
- vector - openlayers 5中矢量图层的交互功能
- c# - C# 将两种不同类型的属性序列化为 JSON
- javascript - 为什么在 vuex 存储中推送到数组后未定义数组?
- c - 有效地将可被 3 或 5 整除的数字相加
- python - django 如何显示新添加产品的详细信息页面
- python - 在 Seaborn / Matplotlib 的小提琴图上指定高于和低于中位数的颜色