Accéder à la base de données Access depuis plusieurs postes

ptitelili059 Messages postés 43 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 9 juin 2010 - 24 nov. 2009 à 14:50
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 - 25 nov. 2009 à 10:16
Bonjour,

Voilà je viens de développer une petite application en VB6 pour l'entreprise dans laquelle je suis en stage. L'application est en relation avec une base de données Access.

Il faut maintenant que je déploie cette application pour toute l'entreprise. J'ai lu qu'il ne faut surtout pas tout mettre sur le serveur (appli + base de données) et faire un raccourci de l'application sur chaque poste. J'ai donc installé l'application sur chaque poste de l'entreprise et mis la base de données sur le serveur.

Voilà mon problème : comment je peux faire pour que chaque utilisateur puisse accéder à la base de données. Normalement, quand la base de données est ouverte une fois, elle ne peut pas être ouverte une seconde fois ?

Merci de votre aide

12 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 nov. 2009 à 14:56
salut,

si, selon ta chaine de connexion et tes paramètres d'accès

PS : raccourci OK mais il faut tout de même les runtimes et le mdac sur chaque poste client

++
[hr]
0
ptitelili059 Messages postés 43 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 9 juin 2010
24 nov. 2009 à 15:00
Merci pour ces infos !

Donc si j'ai bien compris, si je mets mon appli et ma bdd sur le serveur cela est possible ?

Et qu'est ce que je dois modifier dans ma chaine de connexion pour que l'accès se fasse par plusieurs utilisateurs simultanés ? Je précise que ma base de données est protégée par mot de passe.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 nov. 2009 à 15:13
base access, quelle version?
sur quel OS?
accès par ADO? DAO? oledb? autre?
quel mdac sur le client?
quelle est ta chaine de connexion actuelle?

beaucoup de paramètres manquant pour pouvoir te répondre...
0
ptitelili059 Messages postés 43 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 9 juin 2010
24 nov. 2009 à 15:17
Version Access : 2000
OS : Windows XP Pro SP3
Accès par OLEDB
Je ne sais pas à quoi correspond le mdac
Ma chaine de connexion pour l'instant est la suivante :
Set db = OpenDatabase(App.Path & "\PROSPECT.mdb", True, False, ";pwd=password") avec password le mot de passe pour accéder à ma bdd sous Access
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 nov. 2009 à 15:31
http://www.connectionstrings.com/access

http://support.microsoft.com/default.aspx?scid=KB;EN-US;300216

je n'utilises pas oledb, vérifie les propriétés de DB (avec [F1] si nécessaire), ainsi que les 2e et 3e paramètres
ps : ton 4e paramètre semble étrange, on n'y mélange normalement pas une valeur avec un bout de chaine de connexion

++
0
ptitelili059 Messages postés 43 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 9 juin 2010
24 nov. 2009 à 16:11
Merci pour les liens mais ça ne réponds pas à ma question : comment modifier ma chaine de connexion pour que je puisse me connecter à ma base de données depuis plusieurs postes ?

Pour infos les paramètres de ma chaine de connexion sont les suivants :
[*] nom de la base de données
[*] Options (j'ai mis "True" parce que j'avais trouvé ça dans un forum justement)
[*] Lecture Seule (je veux qu'on puisse modifier les données de la table)
[*] Connexion (j'indique le mot de passe pour ouvrir la base de données Access)
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
25 nov. 2009 à 04:29
Bonjour

Voici comment j'ai fait :
J'ai une base application(1) chargée en .mde(le code n'est plus accessible) sur chaque poste de travail qui comporte :
les traitements
les tables de travail
des liens vers les tables initiales et résultantes
Initialement elle était sur un serveur mais les temps de réponse étaient trop dépendant de la charge de celui-ci et du réseau

J'ai une autre base (2) sur un serveur qui comporte les tables initiales (données) dans un répertoire en controle totale uniquement pour les personnes habilitées à utiliser la base application (1).
C'est access qui gére les éventuels conflits d'accès.
J'ai trouvé que la gestion des autorisations par access était trop compliquée, je me suis donc appuyé sur les sécurités réseau et celà évite à l'utilisateur de saisir (encore) un mot de passe.

J'ai une troisième base (3), dite de gestion, dans laquelle j'ai une table des personnes habilitées, sur un serveur dans un répertoire en lecture seule.
Dans cette table j'enregistre le userid de connexion des personnes habilitées.
Je n'utilise pas de mot de passe car j'ai constaté que celui-ci pouvait être communiqué à un copain. Il est vrai que, dans ma société, nous devons utiliser un badge de connexion.
Certe il reste la possibilité de se préter le badge mais c'est plus rare.

Donc pour utiliser l'application il faut :
que l'utilisateur en fasse la demande (on accorde ou pas). Si on accorde il est inscrit comme utilisateur dans le réseau pour la base (2)et dans la base de gestion (3) et je lui communique un lien pour un scipt de chargement (un .cmd) qui installe la base application (1) sur son poste.

A l'ouverture de la base (1) je capture le userid, vérifie qu'il est dans la base de gestion.

Celà semble compliqué mais demande peut de code à écrire mais une organisation.

Dans mon cas j'enregistre également dans ma base de gestion pour chaque utilisateur le début et fin d'utilisation et la version de l'application installée.

Comme mon appli est sur une centaine de postes qui ne sont pas tous au même niveau, j'utilise DAO, access 2000 et fait installer le runtime access 2000 il est gratuit et empêche les utilisateurs de bricoler l'appli (si si celà m'est arrivé et l'utilisateur s'est plaint que l'appli ne fonctionnait plus). Si le .mde protège le code, il ne protège pas les tables etc.

Bonne journée
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 nov. 2009 à 09:24
DAO? donc pas le composant OLEDB....

voici la manière que j'utilisais quand je touchais à DAO :
Set mDb = OpenDatabase(sPath & sBasePath, False, False, "MS Access;uid=admin;pwd=" & sBasePass)

NB : préfère quand même ADO, bien plus récent, plus fiable, et tout autant gratuit
PS : as-tu fait une recherche sur ce qu'est le MDAC ?!
0
ptitelili059 Messages postés 43 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 9 juin 2010
25 nov. 2009 à 09:43
Merci C148270 pour ta solution. Ca fonctionne ^^

J'ai placé la base de données sur le serveur. J'ai ensuite installé l'application sur chaque poste ainsi qu'une base de données sauf que cette base de données ne contient que des tables faisant références aux tables dans la base du serveur et je n'ai plus de problème.

Par contre, est-il possible de tester si une base est déjà ouverte ou non ? Si oui, comment ?

Pour PCPT, j'ai effectuée une recherche sur le MDAC. A ce que j'ai compris c'est un outil qui permet de faire des liaisons avec les bases de données mais ça reste encore flou :s
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
25 nov. 2009 à 10:00
Bonjour

Lorsqu'une basse access est ouverte, il existe un fichier "nomdebase.ldb"
dans le même répertoire que la base.
Ce fichier contient notamment le nom du poste de travail et le nom du user qui l'a ouvert.

Bonne journée
0
ptitelili059 Messages postés 43 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 9 juin 2010
25 nov. 2009 à 10:02
Merci pour cette info mais j'aimerais savoir s'il était possible dans mon code, au moment d'ouvrir la base de données, de savoir si celle-ci est déjà ouvert
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
25 nov. 2009 à 10:16
Re

Je ne l'ai jamais fait dans la base elle-même mais à partir d'une base externe par recherche de l'existence du fichier ldb.

De même je n'ai jamais exploiter le contenu de ce fichier.
Voir sur microsoft.com ou sur accessmonster.com
0
Rejoignez-nous