我有几个具有精确表结构的 mdb 文件。我必须将主表的主键从自动编号更改为所有表中的数字,这意味着我必须:
- 删除主表的所有关系
- 更改主表
- 重新创建关系...为所有表。
有没有办法从一个文件中导出关系并将其导入到所有其他文件中?
我确信这可以通过一些宏/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/