我有一个 MS-Access 数据库,专门用于管理我的其他 MS-Access 数据库 :)
我们称之为:AppManager
我在其中存储有关我开发的其他数据库的信息。
-它们都有不同的工作组文件,用于实现每个用户/组的安全权限-
.MDB/.MDW 的位置与(管理员的)用户名和密码一起存储在我的 AppManager 中
笔记:
AppManager 是为了我自己的利益-因为我是那些 Dbs 的管理员/开发人员-
.mdb 是因为在我们公司,我们仍在使用 MS-Access 2k - 具体来说是 2003-
.mdw 是安全工作组文件(没有它,任何安全数据库都无法打开)
现在我在 AppManager 中加入了其他功能:例如查看组/用户信息、重置密码、其他自定义功能...等
我正在尝试向 AppManager 添加一个新功能,这将使我能够远程导出任何这些 Db 中的所有对象 - 从 AppManager 内部 -
这是这段代码:
Function ConnectSecuredDB
( MDBPath As String, MDWPath As String, UserName As String, Password As String) As Boolean
Dim wsp As Workspace, db As Database, objEngine As DBEngine
Set objEngine = New PrivDBEngine
objEngine.SystemDB = MDWPath
Set wsp = objEngine.CreateWorkspace("New", UserName, Password, dbUseJet)
Set db = wsp.OpenDatabase(MDBPath)
'I Do some stuff here...
db.Close
wsp.Close
Set db = Nothing
Set wsp = Nothing
End Function
我需要将上面的代码与具有 Docmd、SaveAsText 方法的 Application 对象结合起来
就像这段取自MSDN的代码一样——但它不处理安全 mdw 数据库的问题——:
Dim appAccess As Access.Application
Sub DisplayForm()
Dim strDB as String
' Initialize string to database path.
Const strConPathToSamples = "C:\Program " _
& "Files\Microsoft Office\Office11\Samples\"
strDB = strConPathToSamples & "Northwind.mdb"
' Create new instance of Microsoft Access.
Set appAccess = _
CreateObject("Access.Application")
' Open database in Microsoft Access window.
appAccess.OpenCurrentDatabase strDB
' Open Orders form.
appAccess.DoCmd.OpenForm "Orders"
End Sub
就我而言,我必须将最后一行替换为:
With db.Containers("Modules")
For Each doc In .Documents
appAccess.SaveAsText acModule, doc.Name, "C:\temp\" & doc.Name & ".mod"
Next doc
End With
'and repeat it with other objects reports, macros, ...
我的ConnectSecuredDB函数不包含Access.Application对象
关于如何做到这一点的任何想法?
我确实希望有一个解决方法。
谢谢