在Access中存储和重新创建关系

Kev*_*nen 2 ms-access vba access-vba

我想知道是否可以使用VBA来存储,删除和重新创建Access VBA中表的关系?删除部分很简单,但是如何以删除它后能够将其恢复的方式存储它是我遇到的问题.

我原本想知道,以便我可以将某些数据库中的某些表批量复制到该数据库的另一个副本中.我作为裁判遇到了麻烦.桌子上的完整性干扰了插入物.我想到尝试存储然后删除关系,插入数据,然后使用DAO恢复关系.

在考虑了它并试图为它提出一些代码之后,我放弃了这个想法并以不同的方式插入它以完全避免这个问题.然而,在事实之后,我正在思考我一直在尝试的是否可行.

有什么想法吗?

编辑:这是我开始编写的代码.

Private Sub Save_Click()
    Dim db As DAO.Database

    Set db = CurrentDb
    'Save db.Relations somehow as SavedRelations
End Sub

Private Sub Delete_Click()
    Dim db As DAO.Database
    Dim rel As DAO.Relation

    Set db = CurrentDb

    For Each rel In db.Relations
        db.Relations.Delete (rel.Name)
    Next
End Sub

Private Sub Restore_Click()
    Dim db As DAO.Database
    Dim rel As DAO.Relation
    Dim newRel As DAO.Relation

    For Each rel In SavedRelations 'Stored relations from the Save sub
        Set newRel = db.CreateRelation(rel.Name, rel.table, rel.ForeignTable, rel.Attributes)
        For Each fld In rel.Fields
            newRel.Fields.Append fld
        Next
        db.Relations.Append newRel
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)

Han*_*sUp 5

如果在删除关系之前制作数据库的备份副本,则可以稍后将其复制回来.

Private Sub Restore_Click()
    Dim db As DAO.Database
    Dim dbBackup As DAO.Database
    Dim rel As DAO.Relation
    Dim newRel As DAO.Relation

    Set db = CurrentDb()
    Set dbBackup = OpenDatabase("C:\temp\backup.mdb")
    For Each rel In dbBackup.Relations 
        Set newRel = db.CreateRelation(rel.Name, rel.table, rel.ForeignTable, _
            rel.Attributes)
        For Each fld In rel.Fields
            newRel.Fields.Append newRel.CreateField(fld.Name)
            newRel.Fields(fld.Name).ForeignName = _
                rel.Fields(fld.Name).ForeignName
        Next fld
        db.Relations.Append newRel
    Next rel
    Set fld = Nothing
    Set rel = Nothing
    Set dbBackup = Nothing
    Set db = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)