我有一个Access数据库,它有几个链接的表。现在我想在这些表上执行SET IDENTITY_INSERT ON / OFF。我用Google搜索并找到了类似这样的内容
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的示例代码,但不存在代码。
答案 0 :(得分:3)
[它]抱怨传递的字符串必须是DELETE,INSERT,SELECT,PROCEDURE或UPDATE之一。
Access无法识别该查询是(打算是)传递查询,因为.Connect
的{{1}}属性尚未设置为以“ODBC”开头的字符串。 。您需要在设置QueryDef
属性之前设置.Connect
属性。
由于您已经在数据库中定义了链接表,因此您只需复制其中一个.SQL
属性,如下所示:
.Connect