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)
如果在删除关系之前制作数据库的备份副本,则可以稍后将其复制回来.
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)
归档时间: |
|
查看次数: |
2694 次 |
最近记录: |