Ms access VBScript从MSACCESS导出表关系,以便稍后将它们放回

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

对于源代码管理,我试图从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
  • 外部表字段名=
  • 你有这个

    " 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对象的完整经验。非常感谢你!!