2

对于源代码控制,我试图从 Access 中导出表关系,以便能够重新导入它们。据我所知,为了做到这一点,我只需要四条信息。

  1. 表名
  2. 表字段名称
  3. 外部表名
  4. 外部表字段名称

我把前三个记下来了,但是在弄清楚最后一点信息时遇到了问题。通常我的表和字段名称总是相同的,所以这通常不是问题,但我真的很想这个 vbscript 是否可以解释将来可能不那么明显的时间。这是我正在使用的代码片段:

Dim db, totalrelations, i, j

Set db = oApplication.CurrentDb
totalrelations = db.Relations.Count
WScript.Echo totalrelations
If totalrelations > 0 Then
    WScript.Echo "opening " & totalrelations
    For i = totalrelations - 1 To 0 Step -1
       'WScript.Echo (db.Relations(i).Name)
       'WScript.Echo (db.Relations.Item(i).name)

       WScript.Echo "Attributes: " &       db.Relations.Item(i).Attributes

 '**            'iterate through the count!!!
       WScript.Echo "Field count: " & db.Relations.Item(i).Fields.Count

       If db.Relations.Item(i).Fields.Count > 0 Then
            For j = 0 To db.Relations.Item(i).Fields.Count - 1
                WScript.Echo j & " Field name: " & db.Relations.Item(i).Fields.Item(j).Name
            Next 
       End If
       WScript.Echo "ForeignTable: " &     db.Relations.Item(i).ForeignTable
       WScript.Echo "Name: " &             db.Relations.Item(i).Name
       WScript.Echo "PartialReplica: " &   db.Relations.Item(i).PartialReplica

       WScript.Echo "propertycount: " & db.Relations.Item(i).Properties.Count
       'Simply repeats everything we already know
       If db.Relations.Item(i).Properties.Count > 0 Then
            For j = 0 To db.Relations.Item(i).Properties.Count -1
                WScript.echo j & " PropertyName:" & db.Relations.Item(i).Properties.Item(j).Name
                WScript.echo j & " PropertyValue:" & db.Relations.Item(i).Properties.Item(j).Value
            Next
       End if

       WScript.Echo "Table: " &            db.Relations.Item(i).Table
    Next 

End If

我曾假设我可以很聪明,检查字段计数并遍历它们。然而,这个笑话在我身上,因为我在两个不同名称的字段之间建立了关系,并且字段计数仍然为 1。因此,我的聪明并没有向我揭示法力的秘密:P 有人知道我如何哄这个信息出来了?

  1. 表名 = db.Relations.Item.Table
  2. 表字段名称 = db.Relations.Item.Fields.Item(0).Name
  3. 外表名 = db.Relations.Item.ForeignTable
  4. 外部表字段名称 = ????
4

1 回答 1

2

你有这个...

" Field name: " & db.Relations.Item(i).Fields.Item(j).Name

要检索外部表中相关字段的名称,请使用以下命令:

" Foreign Field name: " & db.Relations.Item(i).Fields.Item(j).ForeignName

实际上,您不需要显式包含.Item()来检索每个集合的第 i 个第 j 个成员。所以我会把它缩短为:

" Foreign Field name: " & db.Relations(i).Fields(j).ForeignName
于 2012-05-04T18:49:23.283 回答