#713 | 連結フォームを開いたままリンク先DBを切り替えるには? | フォーム、VBA | |
フォームを開いた状態でリンクテーブルのリンク先データベースを切り替えたい場合、リンクテーブルと連結されたフォームを開いていない状態で行うことが最も確実です。しかし下図のようにリンクテーブルの内容を表示するとともにリンク先DBの切り替えを行う画面(ここではタブコントロールで分けていますがフォームは1つです)としたい場合、若干の問題が発生します。 このフォームではレコードソースが「stblOptions」テーブルとなっており、そのテーブルは「C:\テスト\Data1.accdb」内のテーブルを参照するリンクテーブルとなっています。 またここでは[リンク実行]ボタンのクリック時イベントには次のようなコードを書いています。 Private Sub cmdリンク実行_Click() '[リンク実行]ボタンクリック時 '再リンクの実行 If ReLinkTable(Me!txtFilePath) Then '再リンク成功時 Beep MsgBox "リンク先データベースの変更を完了しました!", vbOKOnly + vbInformation End If End Sub ここで、リンク先を「C:\テスト\Data2.accdb」内の同名テーブルに切り替えてみます。そのテーブルのデータ内容は次のようになっています。 その実行結果は下図の通りです。
では、このような画面でリンク先DBを切り替えた直後、”すぐに画面表示を新しいリンクテーブルの内容に切り替える”ためにはどうしたらよいでしょう?。 それには、下記の1行をプログラムに追記し、フォームの「レコードソース」プロパティを再設定します。とはいっても、リンクテーブル名自体はどちらのデータベースでも同じなので、別の値に変更するのではなく、”現在の設定値をそのまま再度代入してやる”だけです。 Private Sub cmdリンク実行_Click() '[リンク実行]ボタンクリック時 '再リンクの実行 If ReLinkTable(Me!txtFilePath) Then '再リンク成功時 'フォームの表示内容を新しいリンク先のデータに更新 Me.RecordSource = Me.RecordSource '←← この1行を追加 Beep MsgBox "リンク先データベースの変更を完了しました!", vbOKOnly + vbInformation End If End Sub このプログラムで上記と同じ操作を行うと、下図のような結果になり、今度はただちに想定した通りの表示になっていることが分かります。
|
|||
|
Copyright © T'sWare All rights reserved |