複数のテーブルがリンクされた Access db があります。これらのテーブルで 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
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/063270f6-0bb6-4630-85f5-b5b3a72e5295/turning-identityinsert-on-from-ms-access?forum=sqldataaccessから
ただし、これを行うと
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("Passthru")
渡された文字列は、DELETE、INSERT、SELECT、PROCEDURE、または UPDATE のいずれかでなければならないという不満があります。
私はこれが何らかの形で可能であると確信しています。ここで作成者は Sub ExecutePassThru を呼び出すサンプル コードを貼り付けますが、そのコードはありません。