Access 2007 VBA データベースのメンテナンスを依頼されました。
同じフォルダー内の別の Access データベースにリンクされたテーブルがあります。そのデータベースへのリンクがハードコーディングされていたため、ユーザーがフォルダーを新しいフォルダーにコピーすると、元のフォルダーでリンクされたデータベースを使用しようとしました。彼らは、そのシナリオで間違ったリンクされたデータベースを使用する危険を排除するように私に依頼しました.
データベースを開いたときに実行されるコードを追加して、独自のフォルダー内のデータベースへのリンクをリセットします。リンクされたデータベースが存在しないか、名前が変更されている場合、ユーザーは正しいデータベースを参照するように求められます。ここまでは順調ですね。
しかし、ユーザーがそのダイアログをキャンセルした場合、間違ったデータベースに接続したままにしたくありません。テーブルが存在しない場合でも、リンクされたテーブル定義の Connect プロパティを「正しい」パスに設定したいと考えています。その後、誤って間違ったデータベースを使用するのではなく、リンクされたデータベースにコピーするまで、リンクされたテーブルがそこにないというエラーがユーザーに表示されます。
Connect プロパティを存在しないデータベースに設定したときに発生するエラーを回避するために Resume Next を使用すると、変更が反映されず、間違ったデータベースに接続されたままになります。そのため、現時点では、それが発生したときにデータベースを閉じています (リンクされたデータベースが見つからないことをユーザーに警告した後)。間違ったデータベースを使用しないという点では安全ですが、理想的なユーザー エクスペリエンスではないと思います。
では、Tabledef の Connect プロパティを存在しないデータベースに設定することは可能ですか?
ありがとう、
グレッグ