vba - 导入/导出关系

标签 vba ms-access table-relationships

我有几个具有精确表结构的 mdb 文件。我必须将主表的主键从自动编号更改为所有表中的数字,这意味着我必须:

  1. 删除主表的所有关系
  2. 更改主表
  3. 重新创建关系...为所有表。

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

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

谢谢。

最佳答案

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

以下函数将打印出所有关系的元数据。更改此设置以将其保存为您喜欢的任何格式的文件(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

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

Function DropRelationships()
    With CurrentDb
        For Each rel In .Relations
            .Relations.Delete Name:=rel.Name
        Next
    End With
End Function

该函数将创建一个关系。您必须迭代已保存的关系数据的文件。

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

由于时间限制,错误处理和 IO 被省略(得让 children sleep )。

希望这有帮助。

关于vba - 导入/导出关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/354651/

相关文章:

vba - Excel 在运行时另存为

ms-access - 从 CSV 导入 Access 时字段顺序错误

ms-access - SSRS 报表生成器 - 来自经验的问题?

ruby-on-rails - Rails关系一对多;无法构建子对象?

VBA - 使用 Dim 值获取范围 - 对象 __global 的范围失败

sql - 在VBScript中的sql字符串中使用excels命名范围

vba - 如何用英文命名一个excel表

sql - 无法将 vb.net 项目与 Access 号进行比较

oracle - 如何在ORACLE中查看表关系

mysql - 如何在mysql中为外键列设置默认值