PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Acceder à une base de donnée Access
Acceder à une base de donnée Access
Débuté par Jean-François P, 13 fév. 2019 10:49 - 13 réponses
Membre enregistré
110 messages
Posté le 13 février 2019 - 10:49
Bonjour,

Je suis un peu perdu, je voudrais avoir accès à une base de donnée access utilisé par un autre programme.

J'ai le code suivant mais impossible d'avoir accès à la BDD :

HPasse("*","Mon_Mot_DePasse")
HDéclareExterne("Mon_Chemin\Ma_BDD.accdb", "Liste")
SI ErreurDétectée = Vrai ALORS
// Erreur de déclaration du fichier, on affiche l'erreur
Erreur(HErreurInfo())
FIN


Le message d'erreur est : "Ce fichier n'est pas au format windev".

Quelqu'un a un conseil à me donner?

Merci beaucoup.
Membre enregistré
1 640 messages
Posté le 13 février 2019 - 11:13
Salut,

Avec ou sans analyse ?

Essaye ce bout de code :
nConnection est un entier = SQLConnecte(sCheminBaseAcces","","","","OLEDB",hOledbAccess2000) // change la constante hOledbAccess2000 en fonction de la version de ta base

Ce code permet d'executer des instructions SQL au avec SQLExec()
Membre enregistré
110 messages
Posté le 13 février 2019 - 11:29
Salut,

Merci pour ta réponse.
J'ai besoin d'y accéder sans analyse.

Je vais essayer ton code et je reviens vers toi
Message modifié, 13 février 2019 - 11:38
Membre enregistré
110 messages
Posté le 14 février 2019 - 09:56
Bonjour,

Avec ou sans analyse ?

Essaye ce bout de code :
nConnection est un entier = SQLConnecte(sCheminBaseAcces","","","","OLEDB",hOledbAccess2000) // change la constante hOledbAccess2000 en fonction de la version de ta base


J'ai besoin d'y accéder sans analyse. Du coup ce code ne peut pas marché. Je dois passé par une déclaration externe, mais c'est à ce niveau que ça pêche.

HPasse("*","Mon_Mot_DePasse")
HDéclareExterne("Mon_Chemin\Ma_BDD.accdb","Liste")
SIErreurDétectée=VraiALORS
// Erreur de déclaration du fichier, on affiche l'erreur
Erreur(HErreurInfo())
FIN


Mon code ne fonctionne pas et je ne comprend pas l’erreur.

Merci pour votre aide
Membre enregistré
37 messages
Posté le 14 février 2019 - 12:23
Bonjour,
j'ouvre une BDD (.mdb) sans analyse comme ceci.
Je suppose que pour une .accdb c'est pareille.
Je n'ai pas testé.

LOCAL
cnx est une Connexion
sdCli est une Source dede Données

cnx..Provider = hOledbAccess2000
cnx..Source = "Mon_Chemin\Ma_BDD.mdb"
cnx..Accès = hOLectureEcriture
cnx..InfosEtendues = "Mode=16" // Share Deny None

// tblClients = nom d'un tableau dans access
SI HDéclareExterne("tblClients",sdCli,cnx) ALORS
HLitPremier(sdCli,"fldClient")
Info(sdCli.fldclient,sdCli.fldName)
HFerme(sdCli)
HAnnuleDéclaration(sdCli)
FIN


--
Bonne journée

J. Feyen
Membre enregistré
1 640 messages
Posté le 14 février 2019 - 12:37
@Jean-François P

J'utilise ce code dans un projet, sans analyse.
Par contre, cette methode ne permet pas les fonction H, uniquement SQLExec()
Membre enregistré
110 messages
Posté le 14 février 2019 - 14:54
J.Feyen merci pour vos réponses,

En utilisant votre méthode en l'adaptant à ma situation :

cnx est une Connexion
sdCli est une Source dede Données

cnx..Provider=hOledbAccess2010
cnx..Source="C:\XPR\PROS Plus\Database\2019 02.accdb"
cnx..MotDePasse="Monmdp"
cnx..Accès=hOLectureEcriture
cnx..InfosEtendues="Mode=16"// Share Deny None

SI HDéclareExterne("SystemEvents",sdCli,cnx) ALORS
//*************
FIN
Erreur(HErreurInfo())


Ce message d'erreur apparaît :

Détail de l’erreur système :
Description= Impossible de démarrer votre application. Le fichier d’informations du groupe de travail est absent ou ouvert en mode exclusif par un autre utilisateur.


François C. je vous remercie également pour vos réponses,

J'ai fais de même et en utilisant votre méthode en l'adaptant à ma situation :

nConnection est un entier = SQLConnecte("C:\XPR\PROS Plus\Database\2019 02.accdb","","Monmdp","","OLEDB",hOledbAccess2010)
SI nConnection <> 0 ALORS
// La connexion s'est bien passée
SINON
// La connexion a échoué : affichage d'un message explicatif
SQLInfoGene()
Erreur("La connexion à la source de données " + "C:\XPR\PROS Plus\Database\2019 02.accdb" + " a échoué." + RC + ...
"Code erreur : " + SQL.Erreur + RC + SQL.MesErreur)
FIN


Le même message d'erreur apparaît :

Détail de l’erreur système :
Description= Impossible de démarrer votre application. Le fichier d’informations du groupe de travail est absent ou ouvert en mode exclusif par un autre utilisateur.



Je teins à préciser que je n'ai pas Access sur mon PC et que cette BDD n'est ouverte nul part.

Vous avez des idées?

Merci
Membre enregistré
110 messages
Posté le 15 février 2019 - 11:16
Je suis toujours en train de chercher et je n'ai pas de solution, personne n'a jamais eu affaire à ce problème?
Membre enregistré
512 messages
Posté le 15 février 2019 - 11:56
Bonjour Jean-François,

Si vraiment la base Access est utilisée avec un "groupe de travail" particulier, alors il faut l'indiquer dans la connexion, au niveau de la propriété "informations étendues".

Lien vers une ancienne discussion :
https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev.old/18266-probleme-connexion-access-vias-acces-natif-mode/read.awp


Une autre discussion où la chaîne de connexion est très détaillée. :)

C'est cette chaîne de connexion qui est affectée à la propriété InfosEtendues.

https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/97401-ouverture-base-donnee-access/read.awp

--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Message modifié, 15 février 2019 - 12:07
Membre enregistré
512 messages
Posté le 15 février 2019 - 12:06
(message précédent complété, celui-ci est à supprimer)
--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Message modifié, 15 février 2019 - 12:09
Membre enregistré
512 messages
Posté le 15 février 2019 - 13:51
Et s'il s'agit d'une base de données de type ACCDB, alors il n'est pas utile de passer un mot de passe, mais il faut penser à ouvrir la connexion.

Le code pourrait alors ressembler à ceci :

cnx est une Connexion
sdCli est une Source dede Données

cnx..Provider = hOledbAccess2010
cnx..Source = "C:\XPR\PROS Plus\Database\2019 02.accdb"
cnx..Accès = hOLectureEcriture

SI PAS HOuvreConnexion(cnx) ALORS
Erreur("HOuvreConnexion(cnx)",HErreurInfo())
RENVOYER Faux
FIN

SI PAS HDéclareExterne("SystemEvents",sdCli,cnx) ALORS
Erreur("HDéclareExterne('SystemEvents')",HErreurInfo())
RENVOYER Faux
FIN

// maintenant on peut lire/écrire la source de données


--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Message modifié, 15 février 2019 - 13:52
Membre enregistré
512 messages
Posté le 15 février 2019 - 17:21
Bon, après avoir re-re-re-vérifié sur un fichier ACCDB, je constate qu'il faut renseigner le mot de passe de la base de données.
( apparemment j'avais mal testé la première fois :-) ).

Donc le mot de passe de base de données est transmis via les informations étendues.
Par exemple si le mot de pas est "MDP' :

cnx..InfosEtendues="Jet OLEDB:Database Password=MDP"


Pour une chaîne de connexion complexes, les différents paramères doivent être séparés par des cvaractères ";" (point-virgule).
Par exemple :

cnx..InfosEtendues="Mode=16;Jet OLEDB:Database Password=MDP"


--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Membre enregistré
110 messages
Posté le 18 février 2019 - 08:35
Bonjour,

Après un bon week-end ensoleillé j'ai l'immense plaisir d'avoir cette réponse qui m'aide énormément.
J'arrive enfin à me connecter à ma base de donnée.

Il fallait effectivement rentrer le mot de passe dans les InfosEtendues.

Un grand merci à vous.

Bonne journée.
Membre enregistré
72 messages
Posté le 20 novembre 2020 - 14:00
Bonjour,

j'ai utilisé votre code pour me connecter à ma BDD ACCESS et ça fonctionne.
Cependant, je souhaiterai qu'elle apparaisse dans l'analyse et lorsque je veux importer ma BDD j'ai l'erreur suivante :

Impossible de se connecter à c:\...................mdb
Erreur de l'accès OLE DB.
Numéro d'erreur =170124

Echec de l'ouverture de la connexion :
Source de données <C:\ ........ .mdb>
Provider OLEDB <Microsoft.ACE.OLEDB.12.0>

J'ai essayé tous les types de connexion Access mais g toujours la même erreur.
Est ce que quelqu'un aurait une solution ?

Merci à vous.