J'ai une classe qui gère ma connexion à une base de données Access 2003. Je voudrais configurer la même chose seulement pour les fichiers Access 07/10 .accdb. Toute aide est appréciée! Je vous remercie!Connexion Excel VBA à Access 2010
Voici une liste de mes références et une copie de l'objet de classe
Références:
- Microsoft Access 14.0 Object Library
- Microsoft DAO 3.6 Object Library
ConnectionClass:
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
Je voudrais aussi 'Dim OpenConn As Object' au lieu de' DAO.Database'. Cela permet un code indépendant de la version (mais supprime les popups mignons que vous obtenez lorsque vous tapez le '. 'Après OpenConn ou DAO) – SeanC
Lorsque je passe de .mdb à .accdb, il donne une erreur non reconnue. Je vais essayer de déterrer l'erreur exacte plus tard. – JKK
J'ai eu le fichier ouvert, est allé de l'avant et l'a retourné à .accdb. Il échoue sur la fonction runSQL, donne l'erreur d'exécution 91, la variable d'objet ou avec la variable de bloc non définie. La fonction runVolumeReport s'exécute correctement pour le lancement de la macro dans la base de données. Juste n'aime pas la façon dont j'essaie de tirer un ensemble d'enregistrements à partir d'Access quand je le passe au format .accdb – JKK