【发布时间】:2012-08-28 14:11:15
【问题描述】:
我有一个类正在处理我与 Access 2003 数据库的连接。我想仅为 Access 07/10 .accdb 文件设置相同的内容。任何帮助表示赞赏!谢谢!
这是我的引用列表和类对象的副本
参考资料:
- Microsoft Access 14.0 对象库
- Microsoft DAO 3.6 对象库
连接类:
Option Explicit
Private Const DbFile = "\\server\folders\Report.mdb"
Dim OpenConn As DAO.Database
Dim ObjAccess As Object
Private Sub Class_Initialize()
On Error Resume Next
Set OpenConn = DAO.OpenDatabase(DbFile)
If Err.Number = 3024 Then MsgBox "Check connection string in the VBA StaticClass object", vbOKOnly
Set ObjAccess = CreateObject("Access.Application")
ObjAccess.Visible = False
ObjAccess.OpenCurrentDatabase (DbFile)
End Sub
Public Function runSQL(ByVal sql As String) As Recordset
Set runSQL = OpenConn.OpenRecordset(sql)
End Function
Public Function runVolumeReport(ByVal inMacro As String)
ObjAccess.DoCmd.RunMacro inMacro
End Function
Public Function closeResources()
Set ObjAccess = Nothing
OpenConn.Close
End Function
【问题讨论】:
-
我也会
Dim OpenConn As Object而不是DAO.Database。这允许版本无关的代码(但会删除您在 OpenConn 或 DAO 之后键入.时获得的可爱弹出窗口) -
当我从 .mdb 切换到 .accdb 时,会出现无法识别的错误。稍后我会尝试找出确切的错误。
-
我打开了文件,然后将其翻转为 .accdb。它在函数 runSQL 上失败,给出运行时错误 91,对象变量或未设置块变量。不过,runVolumeReport 函数可以很好地启动数据库内的宏。只是不喜欢当我将其切换为 .accdb 格式时尝试从 Access 中提取记录集的方式
标签: ms-access excel ms-access-2007 vba