リレーションシップウィンドウを使用して、MS-Accessデータベース内のテーブル間のリレーションシップを表示しようとしています。他のすべてのテーブルを非表示にしたところ、追跡する必要のある情報を持つ主キーを持つ別のテーブルにリンクする必要があるように見えるテーブルの1つに外部キーが見つかりました。
MySQLのSHOWCREATETABLE構文のように、Accessのテーブルに既存の外部キー制約を一覧表示する方法はありますか?
リレーションシップウィンドウを使用して、MS-Accessデータベース内のテーブル間のリレーションシップを表示しようとしています。他のすべてのテーブルを非表示にしたところ、追跡する必要のある情報を持つ主キーを持つ別のテーブルにリンクする必要があるように見えるテーブルの1つに外部キーが見つかりました。
MySQLのSHOWCREATETABLE構文のように、Accessのテーブルに既存の外部キー制約を一覧表示する方法はありますか?
DAOおよびADOSchemasのtabledefコレクションは、外部キーを表示します。
Dim tdf As TableDef
Dim db As Database
Dim ndx As Index
Set db = CurrentDb
For Each tdf In db.TableDefs
For Each ndx In tdf.Indexes
If ndx.Foreign = True Then
Debug.Print tdf.Name, ndx.Name
For Each fld In ndx.Fields
Debug.Print fld.Name
Next
End If
Next
Next
関係
Dim rel As DAO.Relation
Dim db As Database
Set db = CurrentDb
For Each rel In db.Relations
Debug.Print rel.Name, rel.ForeignTable
For Each fld In rel.Fields
Debug.Print fld.Name
Next
Next
ADOSchema
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CurrentProject.Connection
Set rs = cn.OpenSchema(adSchemaForeignKeys)
Do While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(i).Name & ":- " & rs.Fields(i)
Next
rs.MoveNext
Loop
最後に、隠されたシステムテーブルがあります。
SELECT * FROM MSysRelationships