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

Access VBA中Docmd.OpenForm多条件Where子句语法错误求助

Access VBA Docmd.OpenForm 多条件筛选语法修正

你的错误原因是误用了VBA逻辑运算符And:原代码里的And是VBA的逻辑判断符号,而不是SQL筛选条件的一部分,VBA会尝试把前后两个字符串表达式当作布尔值计算,因此触发“类型不匹配”错误。

正确的多条件写法

需要把AND作为字符串的一部分,拼接到筛选条件里,让它成为SQL Where子句的逻辑连接符:

DoCmd.OpenForm "ISY_Employment", acNormal, , _
  "[Emp_PartID]='" & Me.ISYPartID & "' AND [Emp_ID]=" & [EMPID], , acNormal

额外注意事项

  • 如果Emp_ID是文本类型(而非数字),需要给值加上单引号,写法改为:
    "[Emp_PartID]='" & Me.ISYPartID & "' AND [Emp_ID]='" & [EMPID] & "'"
    
  • 为了避免字符串拼接的语法问题(比如值里包含单引号)和SQL注入风险,推荐使用参数化查询的方式:
    Dim qdf As QueryDef
    Set qdf = CurrentDb.CreateQueryDef("", _
      "SELECT * FROM ISY_Employment WHERE [Emp_PartID] = @PartID AND [Emp_ID] = @EmpID")
    qdf.Parameters("@PartID").Value = Me.ISYPartID
    qdf.Parameters("@EmpID").Value = [EMPID]
    
    DoCmd.OpenForm "ISY_Employment", acNormal, , qdf.SQL, , acNormal
    Set qdf = Nothing
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:13:24