gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:51:51 26 4
gpt4 key购买 nike

我想知道是否可以使用 VBA 在 Access VBA 中的表上存储、删除和重新创建关系?删除部分很简单,但是如何存储它以便删除后能够恢复它是我遇到的难题。

我最初想知道,以便我可以将某些表从一个数据库批量复制到该数据库的另一个副本中。我作为裁判遇到了麻烦。工作台的完整性干扰了 Blade 。我考虑过尝试存储然后删除关系,插入数据,然后使用 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

最佳答案

如果您在删除关系之前创建了数据库的备份副本,则可以稍后将它们复制回来。

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

关于ms-access - 在 Access 中存储和重新创建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4028672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com