Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行vba查询ms访问时出现运行时错误3075_Vba_Ms Access - Fatal编程技术网

执行vba查询ms访问时出现运行时错误3075

执行vba查询ms访问时出现运行时错误3075,vba,ms-access,Vba,Ms Access,大家好,当我尝试执行RunSql方法时,我遇到了这个错误,这是我的查询 Dim x As Integer Dim strSQL As String x = Me.PONumber strSQL = "DELETE TblPoMaterials.PONumber, TblPoMaterials.ProductionDate, TblPoMaterials.AcceptedNumber, TblPoMaterials.RejectedNumber, TblPoMateria

大家好,当我尝试执行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
我知道这不对,但我只是想看看会发生什么,它产生了一个不同的运行时错误。
提前感谢

关于错误消息,在我添加了
dim x as integer后它就消失了
声明在代码中的位置不正确感谢

只需像其他表单控件一样在查询中包含
x
值作为参数。这样可以避免任何连接。下面假定
Me.PONumber
FrmProductionEdit
上的控件。如果没有,请调整为正确的表单名称。此外,
DELETE
子句中的列是多余的,因为行是根据
WHERE
逻辑删除的,而与列出的列无关。最后,使用表别名来避免长表名的重复,并删除多余的括号

strSQL=“DELETE”&vbCrLf&_
“来自TblPoMaterials t”&vbCrLf&_
“其中t.PONumber=[Forms]![FrmProductionEdit]![PONumber]”&vbCrLf&_
“和t.ProductionDate=[Forms]![FRMPProductionEdit]![Zdate]”&vbCrLf&_
“和t.AcceptedNumber=[Forms]![FRMPProductionEdit]![AcceptedProduct]”&vbCrLf&_
“和t.RejectedNumber=[Forms]![FRMPProductionEdit]![RejectedProduct]”&vbCrLf&_
“和t.Shift=[Forms]![FrmProductionEdit]![Shift];”
DoCmd.RunSQL strSQL
更好(也更有效)的方法是,将长SQL保存为不带VBA语法的存储查询对象(
&
,或
vbCrLf
)并简单运行(无需关闭操作查询):


编辑问题以显示准确的错误消息。PONumber是数字类型字段吗?如果不是,则需要撇号分隔符:
='“&x&“)
。或以与其他参数相同的方式引用PONumber参数。PONumber字段是number,关于在我将dim x添加为整数后出现的错误消息声明在代码中的错误位置谢谢这是否回答了您的问题?
DoCmd.OpenQuery "mySavedDeleteQuery"