Accéder à la base de données Access depuis plusieurs postes
ptitelili059
Messages postés43Date d'inscriptionjeudi 18 octobre 2007StatutMembreDernière intervention 9 juin 2010
-
24 nov. 2009 à 14:50
c148270
Messages postés303Date d'inscriptionmercredi 12 janvier 2005StatutMembreDerniè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
A voir également:
Accéder à la base de données Access depuis plusieurs postes
ptitelili059
Messages postés43Date d'inscriptionjeudi 18 octobre 2007StatutMembreDerniè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.
ptitelili059
Messages postés43Date d'inscriptionjeudi 18 octobre 2007StatutMembreDerniè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
Vous n’avez pas trouvé la réponse que vous recherchez ?
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
ptitelili059
Messages postés43Date d'inscriptionjeudi 18 octobre 2007StatutMembreDerniè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)
c148270
Messages postés303Date d'inscriptionmercredi 12 janvier 2005StatutMembreDernière intervention 3 octobre 20131 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.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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 ?!
ptitelili059
Messages postés43Date d'inscriptionjeudi 18 octobre 2007StatutMembreDerniè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
c148270
Messages postés303Date d'inscriptionmercredi 12 janvier 2005StatutMembreDernière intervention 3 octobre 20131 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.
ptitelili059
Messages postés43Date d'inscriptionjeudi 18 octobre 2007StatutMembreDerniè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