10 テーブル系 - リンクテーブルのリンク先を収集する

カレントデータベース内にあるすべてのテーブルを探索し、”リンクテーブル”であるものについて、そのリンク先のデータベースファイルのパスを収集します。
  1. まず「Database」オブジェクトの変数である「dbs」に”カレントデータベース”をセットします。

  2. そのデータベース内にあるすべてのテーブルのコレクションである「TableDefs」の中から、For Each〜Nextステートメントでひとつずつテーブル情報を取り出し、「TableDef」オブジェクトの変数「tdf」にセットしていきます。

  3. 「tdf」オブジェクト変数に取得したひとつのテーブルについて、その属性情報を「Attributes」プロパティから取得し、それがリンクテーブルであるかどうかを組み込み定数「dbAttachedTable」と比較することで判定します。

  4. リンクテーブルであった場合には、その接続情報を「Connect」プロパティから取得します。

  5. 「Connect」プロパティには、リンク先データベースファイルのパスだけでなく、その情報の識別子として「;DATABASE=」という文字列なども含まれていますので、Mid$関数/InStr関数/Len関数を使ってリンク先のパス部分だけを切り出します。

    【例】
    ;DATABASE=D:\Study\解析収集サンプル_be.accdb
            ↓↓↓
    D:\Study\解析収集サンプル_be.accdb

  6. そのテーブル名(「Name」プロパティの値)とリンク先データベースファイルのフルパス(変数strConnectの値)をイミディエイトウィンドウに出力します。

Sub Sample_1_11()
'リンクテーブルのリンク先を収集する

  Dim dbs As Database
  Dim tdf As TableDef
  Dim strConnect As String

  Set dbs = CurrentDb
  For Each tdf In dbs.TableDefs
    With tdf
      If .Attributes And dbAttachedTable Then
        strConnect = .Connect
        strConnect = Mid$(strConnect, InStr(strConnect, ";DATABASE=") + Len(";DATABASE="))
        Debug.Print .Name,
        Debug.Print strConnect
      End If
    End With
  Next tdf

End Sub

実行例:
| Index | Prev | Next |



Copyright © T'sWare All rights reserved