【问题标题】:How to execute inline query as a pass through query?如何执行内联查询作为传递查询?
【发布时间】:2014-07-26 08:40:34
【问题描述】:

我正在尝试从表中删除记录,当我们在 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

【问题讨论】:

  • “一些错误”不是很具体...
  • 这是一个查询(不是查询 - 一个“r”就足够了!)
  • 您至少需要发布实际错误。

标签: sql ms-access vba


【解决方案1】:

您只需将查询保存为传递。所以你可以像这样构建查询:

从传真簿3中删除

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

然后在VBA代码中,你去:

Currentdb.querydefs("MyPass").Execute

如果您想动态创建 SQL,或者说只删除一条记录,那么一旦您保存了上述传递查询,那么您可以即时创建传递 (t-sql) 命令,例如这个:

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

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

但是,没有必要编写所有代码并造成世界贫困,因为在这里一个简单的删除查询就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多