2016-11-23 4 views
0

Je peux me connecter à une base de données en utilisant Access, mais pas à partir de VBA. Dans Access, j'utilise le nom du serveur, la sécurité intégrée de Windows NT et le nom de la base de données. Dans VBA, j'ai essayé de nombreuses variantes de noms de variables et de valeurs dans la chaîne de connexion, et la commande db.Open échoue toujours. Je reçois généralement une erreur de ne pas être en mesure de trouver un ISAM installable, ou une opération OLE DB en plusieurs étapes généré des erreurs. Est-il un moyen de déterminer ce que je peux utiliser comme une chaîne de connexion à partir de la connexion d'accès de travail? Un exemple de code qui échoue avec la dernière erreur:Impossible de se connecter à la base de données à partir de VBA mais en mesure de se connecter à partir d'Access

Dim db As Object 
Dim adoRS As Object 
Set db = CreateObject("ADODB.Connection") 
Set adoRS = CreateObject("ADODB.recordset") 
db.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
"Server=sql03;" & _ 
"Database=db1;" & _ 
"Integrated Security=SSPI;" 
+0

Quel type de base de données que vous vous connectez * à *? – Comintern

+1

https://www.connectionstrings.com/ –

Répondre

0

Le fournisseur que vous utilisez dans la chaîne de connexion est pour MS Access. Si la base de données correcte est la suivante, procédez comme suit. Ajouter le refrence « Microsoft Office 14.0 bibliothèque Accès base de données d'objets du moteur.

Dim cnString, query As String 
Dim rs As New ADODB.Recordset 

'If older version of MS access then try Provider=Microsoft.Jet.OLEDB.4.0;' 

cnSTring= "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<Path>;Jet OLEDB:Database Password=<Pass>;" 
query = "SELECT * FROM TABLE"  
rs.Open query, cnString, adOpenStatic, adLockOptimistic