PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Acceder à une base de donnée Access
Acceder à une base de donnée Access
Started by Jean-François P, Feb., 13 2019 10:49 AM - 13 replies
Registered member
97 messages
Popularité : +1 (1 vote)
Posted on February, 13 2019 - 10:49 AM
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.
Registered member
1,623 messages
Popularité : +100 (114 votes)
Posted on February, 13 2019 - 11:13 AM
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()
Registered member
97 messages
Popularité : +1 (1 vote)
Posted on February, 13 2019 - 11:29 AM
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 modified, February, 13 2019 - 11:38 AM
Registered member
97 messages
Popularité : +1 (1 vote)
Posted on February, 14 2019 - 9:56 AM
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
Registered member
37 messages
Popularité : +1 (1 vote)
Posted on February, 14 2019 - 12:23 PM
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
Registered member
1,623 messages
Popularité : +100 (114 votes)
Posted on February, 14 2019 - 12:37 PM
@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()
Registered member
97 messages
Popularité : +1 (1 vote)
Posted on February, 14 2019 - 2:54 PM
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
Registered member
97 messages
Popularité : +1 (1 vote)
Posted on February, 15 2019 - 11:16 AM
Je suis toujours en train de chercher et je n'ai pas de solution, personne n'a jamais eu affaire à ce problème?
Registered member
505 messages
Popularité : +18 (18 votes)
Posted on February, 15 2019 - 11:56 AM
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 modified, February, 15 2019 - 12:07 PM
Registered member
505 messages
Popularité : +18 (18 votes)
Posted on February, 15 2019 - 12:06 PM
(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 modified, February, 15 2019 - 12:09 PM
Registered member
505 messages
Popularité : +18 (18 votes)
Posted on February, 15 2019 - 1:51 PM
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 modified, February, 15 2019 - 1:52 PM
Registered member
505 messages
Popularité : +18 (18 votes)
Posted on February, 15 2019 - 5:21 PM
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/…
Registered member
97 messages
Popularité : +1 (1 vote)
Posted on February, 18 2019 - 8:35 AM
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.
Registered member
70 messages
Popularité : +1 (1 vote)
Posted on November, 20 2020 - 2:00 PM
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.