フォームのボタンから実行しようとしている vba スクリプトに少し問題があります。
リンクされた MDB ファイルを介して、特定の他のクエリが機能するのに役立つ一連のテーブル作成クエリを作成しました。ユーザーに個々の Make Table クエリを 1 つずつ再実行させるのではなく、( DoCmd.RunSQLを使用して) クエリを VBA スクリプトに入れ、そのスクリプトをフォームのボタンに割り当てました。
私が使用しているデータ ソースには、データのファイル名とファイル日付を含むファイル情報テーブルもあります。
ユーザーがボタンをクリックしたときに、テーブルの作成クエリの文字列が実行されたときにどのデータ ソースが使用されたかをユーザーに知らせたいと思います。そうすれば、スクリプトが実行されたデータがわかります。
これに対する私のアプローチは、ファイル情報テーブルを使用して最終的なテーブル作成クエリを作成し、ファイル名とファイル日付を独自のテーブルに入れることでした。
次に、これらのフィールドをフォームに追加し、この最後の Make Table クエリのDoCmd.RunSQLをボタンの VBA スクリプトの最後に追加します。すべてのテーブルの作成が実行されると、ファイル情報フィールドとファイル日付フィールドがフォームに表示/更新され、スクリプトが最後に実行されたときに使用されたデータ ファイルがユーザーに通知されます。
このコードは次のとおりです (簡潔にするために、FileInfo の前に実行されるすべてのテーブル作成スクリプトを偽の「AllOtherMakeTables」文字列として要約しました)。
Private Sub Command0_Click()
On Error GoTo Err_Command0_Click
DoCmd.SetWarnings False
Dim AllOtherMakeTables As String
Dim FileInfoStamp As String
AllOtherMakeTables = " SELECT SomeField INTO AnotherTable" _
& " FROM SomeTable" _
FileInfoStamp = " SELECT FileInfo.FileName, FileInfo.FileDate INTO FileInfoStamp" _
& " FROM FileInfo;" _
DoCmd.RunSQL AllOtherMakeTables
DoCmd.RunSQL FileInfoStamp
DoCmd.SetWarnings True
Exit_Command0_Click:
Exit Sub
Err_Command0_Click:
MsgBox Err.Description
Resume Exit_Command0_Click
End Sub
上記のスクリプトを使用してボタンをクリックすると、次のエラー メッセージが表示されます。
データベース エンジンは、テーブル 'FileInfoStamp' をロックできませんでした。別のユーザーまたはプロセスによって既に使用されているためです。
フォームに追加したフィールド (FileName と FileDate) は、フォームが開いているときに FileInfoStamp テーブルをロックしているため、スクリプトが FileInfoStamp を再作成しようとすると、テーブルがロックされているため、これを行うことができません。
上記のスクリプトの先頭にDoCmd.Closeを追加し、スクリプトの最後にDoCmd.OpenFormを追加するだけで、これを修正できると思いました (基本的に、[テーブルの作成] コマンドの実行中にフォームを閉じてから再度開きます)。最後にフォーム)。
ただし、フォームを閉じて同じエラー メッセージを表示するだけです。したがって、フォームが「閉じられている」にもかかわらず、フォーム上のフィールドとの接続は何らかの形でアクティブのままであると思います(...?)
これを回避する方法についての支援をいただければ幸いです。ありがとうございました。