vba - 执行 vba 查询 ms 访问时出现运行时错误 3075
问题描述
大家好,当我尝试执行 RunSql 方法时出现此错误,这是我的查询
Dim x As Integer
Dim strSQL As String
x = Me.PONumber
strSQL = "DELETE TblPoMaterials.PONumber, TblPoMaterials.ProductionDate, TblPoMaterials.AcceptedNumber, TblPoMaterials.RejectedNumber, TblPoMaterials.Shift " & vbCrLf & _
"FROM TblPoMaterials " & vbCrLf & _
"WHERE (((TblPoMaterials.PONumber)=" & x & ") AND ((TblPoMaterials.ProductionDate)=[Forms]![FrmProductionEdit]![Zdate]) AND ((TblPoMaterials.AcceptedNumber)=[Forms]![FrmProductionEdit]![AcceptedProduct]) AND ((TblPoMaterials.RejectedNumber)=[Forms]![FrmProductionEdit]![RejectedProduct]) AND ((TblPoMaterials.Shift)=[Forms]![FrmProductionEdit]![Shift]));"
DoCmd.RunSQL strSQL
主要思想是将变量 x 作为上一个查询的条件,我尝试使用
DoCmd.OpenQuery strSQL
我知道这是不对的,但我只是想看看会发生什么,它产生了不同的运行时错误。提前致谢
解决方案
只需将x
值作为参数包含在查询中,就像您执行其他表单控件一样。这样可以避免任何串联。下面假设Me.PONumber
是对FrmProductionEdit
. 如果不是,请调整为正确的表单名称。此外,子句中的列是多余的,因为无论列出的列如何,都会DELETE
根据逻辑删除行。WHERE
最后,使用表别名来避免长表名的重复,并删除了多余的括号。
strSQL = "DELETE " & vbCrLf & _
"FROM TblPoMaterials t " & vbCrLf & _
"WHERE t.PONumber = [Forms]![FrmProductionEdit]![PONumber] " & vbCrLf & _
" AND t.ProductionDate = [Forms]![FrmProductionEdit]![Zdate] " & vbCrLf & _
" AND t.AcceptedNumber = [Forms]![FrmProductionEdit]![AcceptedProduct] " & vbCrLf & _
" AND t.RejectedNumber = [Forms]![FrmProductionEdit]![RejectedProduct] " & vbCrLf & _
" AND t.Shift = [Forms]![FrmProductionEdit]![Shift];"
DoCmd.RunSQL strSQL
更好(并且更高效),将长 SQL 保存为没有 VBA 语法(、、、或)的存储查询对象&
,然后"
简单地运行(无需关闭操作查询):_
vbCrLf
DoCmd.OpenQuery "mySavedDeleteQuery"