运行时错误3012 VBA访问DB

时间:2013-03-20 16:37:11

标签: error-handling access-vba

Dim db As DAO.Database
Set db = CurrentDb()
Dim qd As DAO.QueryDef
Dim sqlQry As String

sqlQry = "SELECT x,y,z " & _
"INTO MyTable2 " & _
"FROM mytable1 " & _
"WHERE ((Condition1) And (Condition2)) "

Set qd = db.CreateQueryDef("MyQueryName", sqlQry) 
DoCmd.OpenQuery (qd.Name)
Set qd = Nothing
Set db = Nothing
End Sub 

您好 我只是尝试在Access VBA中运行查询并继续获取运行时错误'3012'对象MyQueryName已存在于行:

Set qd = db.CreateQueryDef("MyQueryName", sqlQry)

现在我没有:

Set qd = Nothing

并认为这是问题所在。但是在添加它之后我仍然得到了错误,然后记得因为我在qd对象上用错误轰炸了它可能仍然没有清除所以用这两行注释掉了它所以它绕过并直接进入对象复位:

Set qd = db.CreateQueryDef("MyQueryName", sqlQry) 
DoCmd.OpenQuery (qd.Name)

但之后它仍然给我这个错误。难倒等等!

你们有什么想法吗?

由于

安德鲁

1 个答案:

答案 0 :(得分:0)

如果查询已存在,则无法创建查询。您可以删除查询,首先检查它是否存在,或者您可以更新sql

db.QueryDefs("MyQueryName").SQL= sqlQry

所以:

If DLookup("Name", "MSysObjects", "Name= 'MyQueryName'") <> "" Then
    Set qdf = CurrentDb.QueryDefs("MyQueryName")
    qdf.SQL = sqlQry
Else
    Set qdf = CurrentDb.CreateQueryDef("MyQueryName", sqlQry)
End If