Ms access VBScript从MSACCESS导出表关系,以便稍后将它们放回
对于源代码管理,我试图从Access导出表关系,以便能够重新导入它们。据我所知,为了做到这一点,我只需要四条信息Ms access VBScript从MSACCESS导出表关系,以便稍后将它们放回,ms-access,version-control,vbscript,table-relationships,Ms Access,Version Control,Vbscript,Table Relationships,对于源代码管理,我试图从Access导出表关系,以便能够重新导入它们。据我所知,为了做到这一点,我只需要四条信息 表名 表字段名 外来表名 外部表字段名 我记下了前三个,但在计算最后一点信息时遇到了问题。通常我的表和字段名总是相同的,所以这通常不是问题,但我真的希望这个vbscript能够解释将来可能不太明显的情况。以下是我正在使用的代码片段: Dim db, totalrelations, i, j Set db = oApplication.CurrentDb totalrelations
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有人知道我怎样才能把这个信息哄出来吗
" Field name: " & db.Relations.Item(i).Fields.Item(j).Name
要检索外部表中相关字段的名称,请使用以下命令:
" Foreign Field name: " & db.Relations.Item(i).Fields.Item(j).ForeignName
实际上,检索每个集合的第i个或第j个成员不需要显式地包括.Item()
。因此,我将其缩短为:
" Foreign Field name: " & db.Relations(i).Fields(j).ForeignName
这个问题的代码答案是:非常相似,但字段是空的。(至少在它的vbscript改编中)哈哈,哇,现在你这么说似乎太明显了哈哈。我缺乏研究vb对象的完整经验。非常感谢你!!