1

複数のテーブルがリンクされた 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 を呼び出すサンプル コードを貼り付けますが、そのコードはありません。

4

1 に答える 1