OVH Cloud OVH Cloud

DAO

2 réponses
Avatar
Laurent Merlet
Bonjour à tous,

Voici mon problème :

Jusqu'à maintenant, je montais mes bases Access de cette façon ci : une base
serveur et une base client. La base client ayant les tables de la base
serveur en tables liées. Je plaçais la base serveur dans un répertoire
partagé, les clients mappant alors un lecteur sur ce partage, les liaisons
pouvant alors s'effectuer.

J'ai voulu faire évoluer cette manière de faire, le but étant de
s'affranchir du lecteur mappé.

Au lieu d'ouvrir des recordsets de cette manière :
set db = currentdb()
set rs = db.openrecordset ("select * from Tbl1")
Je fais comme ceci
set db = dao.opendatabase("u:\base_serveur.mdb")
u:\ étant le lecteur mappé sur le partage

Donc avec cette méthode, aucun problème pour lire et écrire des données. Là
où j'ai quelques difficultés, est quand je souhaite attribuer une source de
données à un formulaire. Jusqu'à maintenant je faisais par exemple ceci :
Me.RecordSource = "select * from Tbl1"
Puisque les tables ne sont plus explicitement décrites dans ma base de
données, je ne peux plus faire comme ceci. Y a t il un moyen malgré tout
pour continuer à se servir de la propriété RecordSource d'un formulaire ? Ou
bien dois-je changer de mode de fonctionnement, c'est à dire par exemple de
lire les données dans une table, de les inscrire dans le formulaire, puis de
réouvrir un recordset afin de pouvoir réécrire dans la table en cas de
modifications des données. Ceci étant quand même plus lourd au niveau du
code que de travailler sur un recordset.

D'avance merci, n'hésitez pas à me demander pour plus de précisions si je ne
suis pas assez clair.

Laurent

2 réponses

Avatar
Raymond [mvp]
bonsoir.

à mon avis, je retournerais vers les tables attachées, ce qui est la
procédure logique de la base de données et je m'affranchirais de tout ce
souci que tu as actuellement pour attacher ta base. Il faut simplement
prévoir une procédure de contrôle et ré-attache automatique au lancement de
la base ( voir page :
http://officesystem.access.free.fr/vba/verifierliens.htm ).

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Laurent Merlet" a écrit dans le message de
news: 41a385a3$0$7225$
Bonjour à tous,

Voici mon problème :

Jusqu'à maintenant, je montais mes bases Access de cette façon ci : une
base serveur et une base client. La base client ayant les tables de la
base serveur en tables liées. Je plaçais la base serveur dans un
répertoire partagé, les clients mappant alors un lecteur sur ce partage,
les liaisons pouvant alors s'effectuer.

J'ai voulu faire évoluer cette manière de faire, le but étant de
s'affranchir du lecteur mappé.

Au lieu d'ouvrir des recordsets de cette manière :
set db = currentdb()
set rs = db.openrecordset ("select * from Tbl1")
Je fais comme ceci
set db = dao.opendatabase("u:base_serveur.mdb")
u: étant le lecteur mappé sur le partage

Donc avec cette méthode, aucun problème pour lire et écrire des données.
Là où j'ai quelques difficultés, est quand je souhaite attribuer une
source de données à un formulaire. Jusqu'à maintenant je faisais par
exemple ceci :
Me.RecordSource = "select * from Tbl1"
Puisque les tables ne sont plus explicitement décrites dans ma base de
données, je ne peux plus faire comme ceci. Y a t il un moyen malgré tout
pour continuer à se servir de la propriété RecordSource d'un formulaire ?
Ou bien dois-je changer de mode de fonctionnement, c'est à dire par
exemple de lire les données dans une table, de les inscrire dans le
formulaire, puis de réouvrir un recordset afin de pouvoir réécrire dans la
table en cas de modifications des données. Ceci étant quand même plus
lourd au niveau du code que de travailler sur un recordset.

D'avance merci, n'hésitez pas à me demander pour plus de précisions si je
ne suis pas assez clair.

Laurent



Avatar
Laurent Merlet
Oui, je pense que je vais conserver le principe des tables attachées, car
fort pratique, mais je vais écrire mes liens avec des chemins UNC, à la
place des lecteurs mappés. Et puis je vais m'inspirer de ton exemple pour la
recomposition des attaches à l'ouverture.

Merci

"Raymond [mvp]" a écrit dans le message de
news: eNt$
bonsoir.

à mon avis, je retournerais vers les tables attachées, ce qui est la
procédure logique de la base de données et je m'affranchirais de tout ce
souci que tu as actuellement pour attacher ta base. Il faut simplement
prévoir une procédure de contrôle et ré-attache automatique au lancement
de la base ( voir page :
http://officesystem.access.free.fr/vba/verifierliens.htm ).

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Laurent Merlet" a écrit dans le message de
news: 41a385a3$0$7225$
Bonjour à tous,

Voici mon problème :

Jusqu'à maintenant, je montais mes bases Access de cette façon ci : une
base serveur et une base client. La base client ayant les tables de la
base serveur en tables liées. Je plaçais la base serveur dans un
répertoire partagé, les clients mappant alors un lecteur sur ce partage,
les liaisons pouvant alors s'effectuer.

J'ai voulu faire évoluer cette manière de faire, le but étant de
s'affranchir du lecteur mappé.

Au lieu d'ouvrir des recordsets de cette manière :
set db = currentdb()
set rs = db.openrecordset ("select * from Tbl1")
Je fais comme ceci
set db = dao.opendatabase("u:base_serveur.mdb")
u: étant le lecteur mappé sur le partage

Donc avec cette méthode, aucun problème pour lire et écrire des données.
Là où j'ai quelques difficultés, est quand je souhaite attribuer une
source de données à un formulaire. Jusqu'à maintenant je faisais par
exemple ceci :
Me.RecordSource = "select * from Tbl1"
Puisque les tables ne sont plus explicitement décrites dans ma base de
données, je ne peux plus faire comme ceci. Y a t il un moyen malgré tout
pour continuer à se servir de la propriété RecordSource d'un formulaire ?
Ou bien dois-je changer de mode de fonctionnement, c'est à dire par
exemple de lire les données dans une table, de les inscrire dans le
formulaire, puis de réouvrir un recordset afin de pouvoir réécrire dans
la table en cas de modifications des données. Ceci étant quand même plus
lourd au niveau du code que de travailler sur un recordset.

D'avance merci, n'hésitez pas à me demander pour plus de précisions si je
ne suis pas assez clair.

Laurent