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
相关产品推荐
相关产品推荐

