PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD16] Problème de connexion access en mode partagé
[WD16] Problème de connexion access en mode partagé
Débuté par J. Feyen, 24 mar. 2012 12:44 - 7 réponses
Posté le 24 mars 2012 - 12:44
Bonjour,
je dois accéder à une base de donnée access d'un autre fournisseur de software.
Pour le faire j'ai importé le .mdb dans mon analyse, WD ma créé une connexion access 2000 (qui passe automatiquement par le MicroSoft Jet Engine 4 du Windows 7) et j'accède par l'accès natif access (les commandes H* ou des requêtes WD).

Jusque là pas de problème, je peut lire et écrire dans le .mdb.

Voici le problème:
Dès que le programme de l'autre fournisseur à ouvert la base access, je n'arrive plus à accéder au fichier. Le message est que la base est déjà en utilisation.

A l'inverse j'ai le même problème, j'ouvre la base en premier, l'autre programme dit aussi le message fichier déjà en utilisation.

J'ai contacté l'autre fournisseur et il ma confirmé qu'il ouvre sa base en mode partagé. Et c'est vraiment le cas, car dès qu'il ouvre sa base, le fichier .ldb, qui gère le partage de fichier access, apparait.

Par contre ma ouverture ne crée PAS le fichier .ldb, qui d'après l'internet, veut dire que j'ouvre le fichier access en mode exclusif.

J'ai bon chercher dans l'aide, les forums et l'internet, je n'ai pas trouvé comment modifier mon accès natif WD en mode ouverture partage.

Quelqu'un aurait une idée ?

Merci
Membre enregistré
512 messages
Posté le 24 mars 2012 - 15:58
Bonjour J.,

L'accès aux données est réalisé via le fournisseur (provider) OLE DB pour Microsoft Jet.

Il est nécessaire de lui passer une chaîne de connexion dans laquelle sont décrits (entre autres):
• la source de données,
• les modalités de connexion (sécurité, mode de partage),
• le paramétrage du moteur de bases de donénes JET

La chaîne de connexion est composée d'un ensemble de propriétés et de leur valeur.
Pour tout connaître sur la chaîne de connexion du fournisseur Microsoft Jet 4.0, tu peux lire cette page:
» http://msdn.microsoft.com/en-us/library/aa140022%28v=office.10%29.aspx

Le mode d'accès et de partage de la BD est défini par la propriété Mode comme ceci:
• Read: Mode=1
• Write: Mode=2
• Read Write: Mode=3
• Share deny Read: Mode=4
• Share Deny Write: Mode=8
• Share Exclusive: Mode=12
• Share Deny None: Mode=16



Dans ton cas, la connexion est paramétrée dans l'analyse du projet.
Aussi, la chaîne de connexion est construite par HyperFile, en se basant sur les paramètres de la connexion.
Et c'est là qu'il faut définir le mode de partage des données, dans la fenêtre de paramétrage "Connexions définies dans l'analyse".



Pour ouvrir la fenêtre de paramétrage "Connexions définies dans l'analyse":
(1) Ouvrir l'analyse,
(2) exécuter la Commande de menu [Analyse >> Connexions...]
(ou dans le menu contextuel de l'icône Analyse, cliquer sur [Connexions...]).

Ensuite tu sélectionnes la connexion utilisée pour accéder au fichier MDB.

Dans la partie basse de la fenêtre il y a 3 onglets:

• Onglet "Propriétés":
pour définir le nom "logique" de cette connexion (qui permet de la désigner dans le code WLangage), le type de connexion (sélectionner Access revient à choisir le fournisseur OLE DB Microsoft.Jet.OLEDB.4.0), la source de données (le fichier MDB), le nom d'utilisateur (par défaut "Admin"), éventuellement un mot de passe.

• Onglet "Avancé":
Pour répondre à ta question, c'est là que ça se passe, dans la zone de texte "Infos étendues".
Si cette zone de texte est vide, alors la connexion utilise les paramètres par défaut du fournisseur.
Si tu veux paramétrer la connexion, tu dois saisir toi même les propriétés et leurs valeurs, ou bien te faire aider par un assistant accessible via le bouton [Propriétés...] qui renseignera les différentes propriétés.

• Onglet "Utilisée par":
Liste les Fichiers de l'analyse auxqeuls on accède par cette connexion).


Si la zone de texte "Infos étendues" est vide, tu peux directement saisir le mode d'accès et de partage de la base de données.
Pour permettre un accès partagé à la base de données (Share Deny None), il faut saisir dans "Infos étendues":

Mode=16

Après tu valides et le partage devrait être opérationnel.


--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Posté le 24 mars 2012 - 23:04
J.Feyen a formulé la demande :
Bonjour,
je dois accéder à une base de donnée access d'un autre fournisseur de
software. Pour le faire j'ai importé le .mdb dans mon analyse, WD ma créé une
connexion access 2000 (qui passe automatiquement par le MicroSoft Jet Engine
4 du Windows 7) et j'accède par l'accès natif access (les commandes H* ou des
requêtes WD).

Jusque là pas de problème, je peut lire et écrire dans le .mdb.

Voici le problème:
Dès que le programme de l'autre fournisseur à ouvert la base access, je
n'arrive plus à accéder au fichier. Le message est que la base est déjà en
utilisation.

A l'inverse j'ai le même problème, j'ouvre la base en premier, l'autre
programme dit aussi le message fichier déjà en utilisation.

J'ai contacté l'autre fournisseur et il ma confirmé qu'il ouvre sa base en
mode partagé. Et c'est vraiment le cas, car dès qu'il ouvre sa base, le
fichier .ldb, qui gère le partage de fichier access, apparait.

Par contre ma ouverture ne crée PAS le fichier .ldb, qui d'après l'internet,
veut dire que j'ouvre le fichier access en mode exclusif.

J'ai bon chercher dans l'aide, les forums et l'internet, je n'ai pas trouvé
comment modifier mon accès natif WD en mode ouverture partage.

Quelqu'un aurait une idée ?

Merci


Le plus simple serait d'avoir une base de données Access maitre dans
laquelle personne ne travaille en direct.
L'autre utilisateur pourrait avoir une base de données Access dans
lequel tous les ficfiers sont des liens vers une base de données
maitre.
C'est ainsi que je travaillais lorsque je travaillais avec des
logiciels Access.
Tu pourrais également, dans ce cas, remplacer la base de données Access
maître par une autre base de données vraiment client/serveur par
exemple MySQL
Membre enregistré
512 messages
Posté le 26 mars 2012 - 22:04
Bonjour J. et Philippe,

Je rejoins Philippe sur sa suggestion MAIS HELAS ça ne fonctionne pas comme ça pour une analyse WinDev.


Déjà, juste pour qu'on se comprenne sur la terminologie en usage avec Microsoft Access :
base dorsale, base frontale, table attachée.

Avec Access, il est assez fréquent d'avoir une architecture dite dorsale-frontale.
• Les tables de données sont placées dans un fichier MDB dédié aux données, c'est la base dorsale.
• La partie applicative est créée dans un autre fichier MDB, la base frontale.

Dans la base frontale:
• on fait référence aux tables de la base dorsale ; du point de vue "frontal", ce sont des tables attachées.
• on peut aussi créer des requêtes qui exploitent les tables attachées.

Ensuite, l'utilisateur travaille directement avec la base frontale.


Pour en revenir au besoin de J.

Il y a un problème avec l'éditeur d'analyse de WinDev qui ne "sait" pas intégrer dans l'analyse les tables attachées référencées dans une base Access frontale. :-(

En effet, pour qu'une table Access soit intégrée dans l'analyse, il faut obligatoirement référencer la table dans sa base dorsale.

Je ne comprends pas la raison de cette limitation car techniquement, table locale ou table attachée, c'est transparent au niveau de OLE DB.

Pour être complet, il est quand même possible de travailler avec une base frontale, mais via des requêtes directes sans modification.


--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Posté le 28 mars 2012 - 12:19
Bonjour,
merci pour tous vos réponses.
Le problème est résolu.

Encore quelques précisions:
la réponse de JBO avec le mode "Share Deny None" était une partie de la solution.
L'autre était, que j'avais partagée le répertoire local du PC qui contenait la base Access.
Ce que je ne savais pas, sous Windows 7, un partage de répertoire se fait par défaut en mode lecture seul.
Comme je passais par ce partage, je n'avais donc pas les droits d'écriture sur le répertoire.
Dès que j'avais coché "Accès complet", tous fonctionnait correctement.
Membre enregistré
512 messages
Posté le 28 mars 2012 - 16:14
Bonjour J.,

Merci pour le retour d'information, notamment sur les dossiers partagés sous Windows 7.

Bonne continuation. :-)

--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Posté le 15 décembre 2014 - 20:32
Bonjour,

Lorsque j'ai voulu me connecter à un fichier excel ouvert, j'ai eu le message d'erreur suivant.
"Le moteur de la base de données Microsoft Office Access ne peut pas ouvrir ou écrire sur le fichier « ». Il est déjà ouvert en mode exclusif par un autre utilisateur, ou vous devez avoir l'autorisation de visualiser et d'écrire sur ses données."
Posté le 15 décembre 2014 - 20:33
j'ai le message d'ereeur suivant: "Le moteur de la base de données Microsoft Office Access ne peut pas ouvrir ou écrire sur le fichier « ». Il est déjà ouvert en mode exclusif par un autre utilisateur, ou vous devez avoir l'autorisation de visualiser et d'écrire sur ses données."