在MS Access中导入/导出关系

lam*_*cro 4 ms-access vba access-vba table-relationships

我有几个具有确切表结构的mdb文件.我必须将主表的主键从autonumber更改为所有这些中的数字,这意味着我必须:

  1. 删除主表所具有的所有关系
  2. 更改主表
  3. 再次创建关系,...对于所有表.

有没有办法从一个文件导出关系并将它们导入到所有其他文件?

我确信这可以通过一些宏/ vb代码来完成.有没有人有我可以使用的例子?

谢谢.

Pat*_*uff 12

不是一个完整的解决方案,但这可能会让你...

以下函数将打印出所有关系的元数据.将其更改为以您喜欢的任何格式保存到文件(CSV,制表符分隔,XML等):

Function PrintRelationships()
    For Each rel In CurrentDb.Relations
        With rel
            Debug.Print "Name: " & .Name
            Debug.Print "Attributes: " & .Attributes
            Debug.Print "Table: " & .Table
            Debug.Print "ForeignTable: " & .ForeignTable

            Debug.Print "Fields:"
            For Each fld In .Fields
                Debug.Print "Field: " & fld.Name
            Next
        End With
    Next
End Function
Run Code Online (Sandbox Code Playgroud)

此函数将删除数据库中的所有关系:

Function DropRelationships()
    With CurrentDb
        For Each rel In .Relations
            .Relations.Delete Name:=rel.Name
        Next
    End With
End Function
Run Code Online (Sandbox Code Playgroud)

此功能将创建一种关系.您将不得不迭代保存的关系数据的文件.

Function CreateRelationships()
    With CurrentDb
        Set rel = .CreateRelation(Name:="[rel.Name]", Table:="[rel.Table]", ForeignTable:="[rel.FireignTable]", Attributes:=[rel.Attributes])
        rel.Fields.Append rel.CreateField("[fld.Name for relation]")
        rel.Fields("[fld.Name for relation]").ForeignName = "[fld.Name for relation]"
        .Relations.Append rel
    End With
End Function
Run Code Online (Sandbox Code Playgroud)

由于时间限制,错误处理和IO省略(让孩子们上床睡觉).

希望这可以帮助.