2012-07-31 105 views

回答

8

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 
+0

所以我必須使用宏來查看這些信息? – leeand00 2012-07-31 14:22:36

+0

有一個隱藏的系統表MSysRelations顯示所有關係,但它是一個不受支持的功能:'SELECT * FROM MSysRelations',不用說,但我會,不要惹它。 – Fionnuala 2012-07-31 14:30:49

+0

但是從它讀取是好嗎? – leeand00 2012-07-31 14:38:40