如何将内联查询作为传递查询执行?

时间:2014-07-26 08:40:35

标签: sql vba ms-access access-vba

我试图从表中删除记录,当我们在MS Access中有本地表但当我将其转换为链接表(通过SQL Server)时它会工作,那么它将通过一些错误。我到处寻找解决方案,但我最终发现如果我将此查询用作传递查询,我不会收到任何错误。

现在我的问题是如何在不首先创建传递查询的情况下执行此查询?

Dim db As DAO.Database
Set db = CurrentDb
Dim rsRUDelete As DAO.Recordset

Set rsRUDelete = db.OpenRecordset("SELECT * FROM table")
If rsRUDelete.AbsolutePosition > -1 Then
    With rsRUDelete
        .MoveFirst
        Do Until .EOF
            .Delete
            .MoveNext
        Loop
    End With
End If

1 个答案:

答案 0 :(得分:1)

您只需将查询保存为pass-though即可。因此,您可以构建如下的查询:

从faxbook3删除

因此,如果将上述内容保存为名为“MyPass”的传递查询

然后在VBA代码中,你去了:

Currentdb.querydefs("MyPass").Execute

如果你想动态创建SQL,或者说只删除一条记录,那么一旦你保存了上面的pass-though查询,你就可以像在运行中一样创建pass-though(t-sql)命令这样:

With currentdb.querydefs("MyPass")
   .SQL = "delete from faxBook3 where ID = " & myVBAVairable
   .EXECUTE
End with

因此不需要记录集,更糟糕的是,从pass-though查询创建的任何reocrdset都是只读的,因此不允许编辑或删除数据。

然而,没有必要编写所有代码并创建世界贫困,因为简单的删除查询在这里就足够了。

相关问题