如何使用来自 Access VBA 的传递查询执行 SET IDENTITY_INSERT ON/OFF?
How to execute SET IDENTITY_INSERT ON/OFF with a pass-through query from Access VBA?
我有一个 Access 数据库,其中链接了多个表。现在我想在这些表上执行 SET IDENTITY_INSERT ON/OFF 。我用谷歌搜索并找到了这样的东西
Private mDb As Database
Public Sub SetIdentityInsert(strTableName As String, strOnorOff As String)
Dim qdf As QueryDef
Dim strSQL As String
On Error GoTo Proc_Err
Set qdf = mDb.QueryDefs("qryIDENTITY_INSERT")
strSQL = "SET IDENTITY_INSERT " & strTableName & " " & strOnorOff
qdf.SQL = strSQL
qdf.Execute
Proc_Exit:
On Error Resume Next
Set qdf = Nothing
Exit Sub
Proc_Err:
Resume Proc_Exit
Resume
End Sub
但是,如果我这样做
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("Passthru")
我抱怨传递的字符串必须是 DELETE、INSERT、SELECT、PROCEDURE 或 UPDATE 之一。
我很确定这是可能的。 Here 作者粘贴了调用 Sub ExecutePassThru 的示例代码,但是它的代码不存在。
[It] complains that the passed string has to be one of DELETE, INSERT, SELECT, PROCEDURE or UPDATE.
Access 无法识别该查询是(旨在成为)传递查询,因为 QueryDef
的 .Connect
属性 尚未设置为字符串以 "ODBC;" 开头。您需要先设置 .Connect
属性 ,然后再设置 .SQL
属性.
由于您已经在数据库中定义了链接表,因此您只需复制其中一个 .Connect
属性,如下所示:
Dim cdb As DAO.Database
Set cdb = CurrentDb
Dim qdf As DAO.QueryDef
Set qdf = cdb.QueryDefs("Passthru")
qdf.Connect = cdb.TableDefs("YourExistingLinkedTableName").Connect
qdf.ReturnsRecords = False
qdf.SQL = "SET IDENTITY_INSERT " & TheRestOfYourSqlCommand
我有一个 Access 数据库,其中链接了多个表。现在我想在这些表上执行 SET IDENTITY_INSERT ON/OFF 。我用谷歌搜索并找到了这样的东西
Private mDb As Database
Public Sub SetIdentityInsert(strTableName As String, strOnorOff As String)
Dim qdf As QueryDef
Dim strSQL As String
On Error GoTo Proc_Err
Set qdf = mDb.QueryDefs("qryIDENTITY_INSERT")
strSQL = "SET IDENTITY_INSERT " & strTableName & " " & strOnorOff
qdf.SQL = strSQL
qdf.Execute
Proc_Exit:
On Error Resume Next
Set qdf = Nothing
Exit Sub
Proc_Err:
Resume Proc_Exit
Resume
End Sub
但是,如果我这样做
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("Passthru")
我抱怨传递的字符串必须是 DELETE、INSERT、SELECT、PROCEDURE 或 UPDATE 之一。
我很确定这是可能的。 Here 作者粘贴了调用 Sub ExecutePassThru 的示例代码,但是它的代码不存在。
[It] complains that the passed string has to be one of DELETE, INSERT, SELECT, PROCEDURE or UPDATE.
Access 无法识别该查询是(旨在成为)传递查询,因为 QueryDef
的 .Connect
属性 尚未设置为字符串以 "ODBC;" 开头。您需要先设置 .Connect
属性 ,然后再设置 .SQL
属性.
由于您已经在数据库中定义了链接表,因此您只需复制其中一个 .Connect
属性,如下所示:
Dim cdb As DAO.Database
Set cdb = CurrentDb
Dim qdf As DAO.QueryDef
Set qdf = cdb.QueryDefs("Passthru")
qdf.Connect = cdb.TableDefs("YourExistingLinkedTableName").Connect
qdf.ReturnsRecords = False
qdf.SQL = "SET IDENTITY_INSERT " & TheRestOfYourSqlCommand