私の Access クライアントには、acDialog モードで開かれたフォームであるというトリックを使用する検索結果フォームがあります。ユーザーが検索をキャンセルすると、フォームは閉じます。ユーザーが検索項目の 1 つを選択すると、フォームは結果をバインドされていないフィールドに書き込み、非表示にします。
acDialog
前の段落で説明した 2 つのイベントのいずれかが発生するまで、呼び出し元のコードは (モードのために) 中断されます。呼び出し元のコードは、フォームがまだ読み込まれているかどうかを確認します。検索項目が要求されていることがわかっている場合は、フォームから項目を取得して閉じます。フォームがまだ読み込まれていない場合は、キャンセル ルートが選択されたと見なされます。
検索結果のデータソースは select ステートメントです"SELECT * FROM details ORDER BY ..."
このトリックは、"details" が別の Access データベースへのリンク テーブルであるコードでしばらくの間機能していました。
SQL Server に移植しています。詳細テーブルは、起動時に正しい SQL Server インスタンスに動的にリンクされるようになりました。次の接続文字列の使用
ODBC;driver=SQL Server;SERVER=ROO\SQLEXPRESS;DATABASE=Test_DB;UID=my_app;PWD=xxxx;
(無実を守るためにパスワードなどを変更しています)
Access がアプリケーションを終了するとき (およびそのときのみ) - コードを通るパスが visible = false トリックを使用する結果になった場合、エラー メッセージが表示されて終了します。パスが検索フォームを経由しているが、戻る前にフォームが閉じたアプリケーションの終了がある場合、エラー メッセージは表示されません。
エラーメッセージは次のとおりです。
Cannot access database because of Error [Microsoft][ODBC Driver Manager] Data source
name not found and no default driver specified
終了します。
なぜこれが起こっているのかを正確に突き止め、止める必要があります。