对于源代码控制,我试图从 Access 中导出表关系,以便能够重新导入它们。据我所知,为了做到这一点,我只需要四条信息。
- 表名
- 表字段名称
- 外部表名
- 外部表字段名称
我把前三个记下来了,但是在弄清楚最后一点信息时遇到了问题。通常我的表和字段名称总是相同的,所以这通常不是问题,但我真的很想这个 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 有人知道我如何哄这个信息出来了?
- 表名 = db.Relations.Item.Table
- 表字段名称 = db.Relations.Item.Fields.Item(0).Name
- 外表名 = db.Relations.Item.ForeignTable
- 外部表字段名称 = ????