Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/07/2011, 11h04   #1
Membre habitué
 
Homme jean maury
Inscription : mars 2009
Messages : 116
Détails du profil
Informations personnelles :
Nom : Homme jean maury
Âge : 42
Localisation : Pologne

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : mars 2009
Messages : 116
Points : 111
Points : 111
Par défaut Connection par ADO au fichier Access en cours

Bonjour.

Pour se connecter a une base Access dans laquelle on execute le programme VBA par ADO, il faut :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
Dim oConn As ADODB.Connection, oRS As ADODB.Recordset
Set oConn = New ADODB.Connection
oConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
          "Data Source=" & CurrentProject.FullName & ";"
oConn.Open
'Jet ne semble plus fonctionner avec Access 2007 lorsque le fichier est en format accdb et non mdb
 
'puis ouverture de la table
Set oRS = New ADODB.Recordset
oRS.CursorLocation = adUseClient
oRS.Open "select * from Matable", oConn, adOpenDynamic, adLockOptimistic, adCmdText
Le probleme, c'est que :
- dans la version complete d'Access, si je me trouve sur le formulaire en mode modifications et que je repasse en mode saisie, bien souvent Access me signale que la base est deja ouverte.
- le probleme ne se pose pas si j'ouvre le formulaire (je n'etais pas en mode modifications) dans cette meme version complete d'Access
- lorsque j'ouvre le formulaire avec le runtime Access, la connection a la base par ADO (les lignes indiquees ci-dessus) lui pose probleme, le programme est ferme pour cause d'erreur.

Sachant que, par DAO, lorsque je cherche a ouvrir une table qui se trouve dans le meme fichier que le module VBA, je me contente d'ouvrir la table en indiquant "Currentdb" comme ci-dessous :

Code :
1
2
3
4
 
 
Dim Tb as dao.recordset
set tb=currentdb.openrecordset("matable",dbopendynaset)
J'ai essaye de faire la meme chose par ADO en remplacant :

Code :
1
2
3
 
 
oRS.Open "select * from Matable", oConn, adOpenDynamic, adLockOptimistic, adCmdText
par :

Code :
1
2
3
4
 
 
oRS.Open "select * from Matable", CurrentProject.FullName , adOpenDynamic, adLockOptimistic, adCmdText
'j'ai remplace oConn par CurrentProject.FullName
ou par :

Code :
1
2
3
 
oRS.Open "select * from Matable", CurrentDb , adOpenDynamic, adLockOptimistic, adCmdText
'j'ai remplace oConn par CurrentDb
Access me signale qu'il n'a pas pu se connecter a la base. Erreur signalee :
"Method 'Open' of object '_Recordset' failed".

Comment peut on faire pour ouvrir une table et travailler dessus par ADO sans ouvrir d'abord un acces a la base Access deja ouverte ?

Merci.
Cdlt.
jj4822 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 14h39   #2
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Bonjour,

Pour utiliser la base ouverte ds laquelle tu as ton code, il faut utiliser ça :

Code :
1
2
3
Dim oConn As ADODB.Connection
'Connection à la Base Access
Set oConn = CurrentProject.Connection
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/07/2011, 16h11   #3
Membre habitué
 
Homme jean maury
Inscription : mars 2009
Messages : 116
Détails du profil
Informations personnelles :
Nom : Homme jean maury
Âge : 42
Localisation : Pologne

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : mars 2009
Messages : 116
Points : 111
Points : 111
Bonjour.

Merci pour la reponse qui a resolue mon probleme.

Cdlt.
jj4822 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h13.


 
 
 
 
Partenaires

Hébergement Web