You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何MS Access中两个相似的VBA子过程运行结果不同?

MS Access VBA FindFirst 搜索失效故障分析

核心故障原因

  • 通配符类型错误:代码(B)中使用了**全角的「*」作为LIKE运算符的通配符,而Access的SQL语法仅识别半角的「*」**作为任意字符匹配通配符。全角星号会被当作普通字符处理,导致搜索条件变成匹配包含「*目标内容*」的字段值,自然找不到实际存在的内容。

代码对比验证

对比代码(A)和(B)的关键条件语句:

  • 代码(A)(正确):
    criteria = "Ecrits.Nom like " & scQ & "*" & rEcrvain & "*" & scQ
    
  • 代码(B)(错误):
    criteria = "Ecrit like " & scQ & "*" & rEcrit & "*" & scQ
    

修复方案

将代码(B)中的全角「*」替换为半角「*」,即使加上表名前缀Ecrits.Ecrit,只要通配符错误,问题依然存在。修复后的条件语句如下:

criteria = "Ecrits.Ecrit like " & scQ & "*" & rEcrit & "*" & scQ

额外注意事项

  • 如果表单记录集基于多表查询,字段引用必须使用表名.字段名格式避免歧义,这一点代码(A)处理正确,但并非本次故障的诱因。
  • 可通过Debug.Print rEcrit在VBA立即窗口验证Trim(Me![s_ecrit])获取的内容是否存在不可见字符(如空格、换行),避免额外干扰。

内容的提问来源于stack exchange,提问作者Kwari JEONG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:28:22