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

Posted

技术标签:

【中文标题】执行 vba 查询 ms 访问时出现运行时错误 3075【英文标题】:Runtime Error 3075 while excution vba query ms access 【发布时间】:2021-03-15 10:51:59 【问题描述】:

大家好,我在尝试执行 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

我知道这是不对的,但我只是想看看会发生什么,它产生了一个不同的运行时错误。 提前致谢

【问题讨论】:

编辑问题以显示确切的错误消息。 PONumber 是数字类型字段吗?如果没有,需要撇号分隔符:='" & x & "')。或以与其他参数相同的方式引用 PONumber 参数。 PoNumber 字段是数字,关于错误消息它在我添加 dim x 作为整数后消失了,声明在代码中的错误位置谢谢 这能回答你的问题吗? Microsoft Access VBA - Run time error '3075' 【参考方案1】:

只需将x 值作为参数包含在您的查询中,就像您执行其他表单控件一样。这样可以避免任何串联。下面假设Me.PONumberFrmProductionEdit 上的控件。如果不是,请调整为正确的表单名称。此外,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"

【讨论】:

【参考方案2】:

关于在我添加 dim x as integer 声明在代码中的错误位置后消失的错误消息,谢谢

【讨论】:

以上是关于执行 vba 查询 ms 访问时出现运行时错误 3075的主要内容,如果未能解决你的问题,请参考以下文章

访问 VBA - 导入 *.CSV 时出现运行时错误 31519。您无法导入此文件

将公式插入单元格 VBA Excel 时出现运行时错误 1004

VBA 在命名范围上尝试求和函数时出现运行时错误

从 Excel VBA 运行工作参数化 Access SQL 查询 (INSERT INTO) 时出现“需要对象”错误

带有子查询的 SQL 查询上的 MS Access VBA 运行时错误 3075

将数据插入表时出现 ADODB VBA 自动化错误