我的问题
我有一个相当直接的 autoexec 宏来为我的拆分数据库执行版本控制检查。我在前端有一个名为LocalVersionNumber
的表,在后端有一个名为 的表LiveVersionNumber
。每个版本号可能有多个值(例如,正在使用哪个版本的后端,哪个前端等)。因此,这些表中的值通过查询__LiveVersionParser_Q
和__LocalVersionParser_Q
. 无需过多浪费细节,本地版本号应始终等于或大于实时版本号。
我编写了一个查询来比较我的本地和实时解析值 - 并通过 IIF 表达式确定更新或保持当前版本的逻辑。此测试查询运行没有问题,但现在我已将逻辑拉入 autoexec 宏并且出现错误:
找不到您在表达式中输入的名称“__LiveVersionParser_Q”。
我已经仔细检查过,表格和字段拼写正确。我什至已经将宏中的语句复制并粘贴回查询中,并且查询仍然正确执行。
编码
(在宏生成器不是 VBA - 呃)
“如果”行动
CDbl([__LiveVersionParser_Q].[DevelopmentVersion])
<=CDbl([__LocalVersionParser_Q].[DevelopmentVersion])
然后...执行我的更新前端逻辑。
注意:对于那些询问“为什么使用 CDbl?”的人,之所以使用它,是因为版本号是一个文本字符串,其中包含多个由“.”分隔的值。在解析版本之后,然后通过将这些字符串转换为双精度(使用 CDbl)来比较这些字符串以查看哪个更大。
故障排除
正如我之前所说,这个语句确实有效,只是不在这个宏中。我使用以下查询对其进行了故障排除(为了保持一致,这是我测试的“设计”视图表达式,而不是 SQL):
Expr1: IIf(CDbl([__LiveVersionParser_Q].[DevelopmentVersion])
<=CDbl([__LocalVersionParser_Q].[DevelopmentVersion]),"OK","UPDATE")
有什么建议么?我觉得我错过了一些简单的东西。