Ms access MS Access—“MS Access”;找不到名称。。。在表达式“中”;错误-IIf CDbl语句 我的问题

Ms access MS Access—“MS Access”;找不到名称。。。在表达式“中”;错误-IIf CDbl语句 我的问题,ms-access,version-control,autoexec,Ms Access,Version Control,Autoexec,我有一个相当直接的autoexec宏,用于对拆分数据库执行版本控制检查。我在前端有一个名为LocalVersionNumber的表,在后端有一个名为LiveVersionNumber的表。每个版本号可能有多个值(例如,正在使用哪个版本的后端、哪个前端等)。因此,这些表中的值通过查询\uuu LiveVersionParser\u Q和\uu LocalVersionParser\u Q进行解析。在不涉及太多浪费的细节的情况下,本地版本号应始终等于或大于实时版本号 我写了一个查询,比较我的本地和实

我有一个相当直接的autoexec宏,用于对拆分数据库执行版本控制检查。我在前端有一个名为
LocalVersionNumber
的表,在后端有一个名为
LiveVersionNumber
的表。每个版本号可能有多个值(例如,正在使用哪个版本的后端、哪个前端等)。因此,这些表中的值通过查询
\uuu LiveVersionParser\u Q
\uu LocalVersionParser\u Q
进行解析。在不涉及太多浪费的细节的情况下,本地版本号应始终等于或大于实时版本号

我写了一个查询,比较我的本地和实时解析值,并通过IIF表达式确定更新或保持当前版本的逻辑。此测试查询运行时没有问题,但现在我已将逻辑拉入autoexec宏,并得到错误:

找不到您在中输入的名称“\uu LiveVersionParser\u Q” 表情

我仔细检查了一下,表和字段拼写正确。我甚至将宏中的语句复制并粘贴回查询中,查询仍能正常执行

代码 (在宏生成器中不是VBA-ugh)

“如果”行动

CDbl([[uuuu LiveVersionParser\u Q].[DevelopmentVersion])
我已经找到了解决办法(不是根本原因和解决方案)如果有人能对根本原因提供正确的解释,我会很高兴地将答案转换为他们的功劳

但与此同时,如果其他人遇到类似问题,我的解决方法如下:

第1步: 如我在问题中所述,我有一个运行“IF”操作的查询。所以我用它来输出一个
结果
字段,该字段表示“OK”或“Update”

第二步: 我将autoexec宏更改为如下所示:

IF...
    DMax("Result","__VersionControl_FinalTest")="Update"
THEN...
    Run my update code.
ELSE...
    CancelEvent
END IF
注意:我尝试使用以下简单语句:

IF...
    [__VersionControl].[Result] = "Update"
但是,当我运行该宏时,我再次收到错误2482(“找不到名称…”)


为什么DMax能够“找到”查询
\uversioncontrol\ufinaltest
而IF语句不能,我不知道——但至少我已经备份并运行了

如果要转换的字符串中存在多个点,CDbl将失败。@古斯塔夫-解析的字符串中没有点。例如,“134”将是一个结果,而“132”将是另一个结果。逻辑总是在查询中传递。只有宏因“找不到名称”而出错,这意味着它找不到容器对象,因此可能是域问题?好吧,这不是您所写的:版本号是一个文本字符串,包含多个由“.”分隔的值。
IF...
    DMax("Result","__VersionControl_FinalTest")="Update"
THEN...
    Run my update code.
ELSE...
    CancelEvent
END IF
IF...
    [__VersionControl].[Result] = "Update"