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

Access VBA按日期查询报Data Type mismatch in criteria expression错误如何解决

错误原因及修复方案

核心错误点

  • 日期值包裹语法错误
    你编写的SQL拼接代码中,LaDate的匹配条件写为LaDate = '#" & LaDate & "#'",相当于给日期值同时套了单引号和#符号。Access SQL语法中,日期类型取值仅需用#包裹即可,不需要额外加单引号;加单引号后Access会将该部分识别为字符串,和Date/Time类型的字段匹配时就会触发类型不匹配错误。
  • 日期格式兼容性隐患
    VBA直接将Date类型变量转为字符串拼接进SQL时,会受系统区域设置影响,生成的月/日/年顺序可能和Access预期不符,也容易触发类型匹配错误。

修复方案

方案1:修正拼接语法

调整SQL拼接逻辑,去掉日期外的单引号,同时格式化日期为通用格式:

sSQL = "SELECT " & FieldSelect & " FROM Test WHERE Match1= '" & VarMatch1 & "' AND LaDate = #" & Format(LaDate, "yyyy-mm-dd") & "#"

方案2(更推荐):使用参数化查询

参数化查询无需处理格式转义、也不会出现类型匹配问题,同时可以避免SQL注入风险:

Dim cmd As New ADODB.Command
With cmd
    .ActiveConnection = ' 此处替换为你当前使用的数据库连接对象
    .CommandText = "SELECT " & FieldSelect & " FROM Test WHERE Match1= ? AND LaDate = ?"
    ' 按顺序添加参数,和上面占位符一一对应
    .Parameters.Append .CreateParameter(, adVarChar, adParamInput, 255, VarMatch1)
    .Parameters.Append .CreateParameter(, adDate, adParamInput, , LaDate)
End With
Dim rs As ADODB.Recordset
Set rs = cmd.Execute ' 执行后直接从rs中获取查询结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:45:08