OVH Cloud OVH Cloud

Chemin par défaut base access principal.

10 réponses
Avatar
Sogolon
Bonjour tout le monde.
Pour utiliser ma base en réseau je l'ai scindée en deux:
- Base1 (contenant les tables placée dans un dossier partagé du réseau)
- Base2 (Mon interface contenant le code et installée sur chaque poste client)
Dans mon application j'ai besoin du chemin exact de l'emplacement de la Base1.
(J'ai copié le chemin "\\serveur\partage\"
QUESTION:
Dans la perspective de déplacement de ma Base "Base1" ou du changement de
serveur, y'a-t-il une technique par VBA de désigner le chemin de
l'emplacement de la Base "Base1".
Merci de votre aide.
A+...

10 réponses

Avatar
3stone
Salut,

"Sogolon"
| Pour utiliser ma base en réseau je l'ai scindée en deux:
| - Base1 (contenant les tables placée dans un dossier partagé du réseau)
| - Base2 (Mon interface contenant le code et installée sur chaque poste client)
| Dans mon application j'ai besoin du chemin exact de l'emplacement de la Base1.
| (J'ai copié le chemin "serveurpartage"
| QUESTION:
| Dans la perspective de déplacement de ma Base "Base1" ou du changement de
| serveur, y'a-t-il une technique par VBA de désigner le chemin de
| l'emplacement de la Base "Base1".


Tu cherche comment refaire le lien vers les tables attachées par VBA ?

si oui, regarde ceci :
http://www.3stone.be/access/articles.php?lng=fr&pg(


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Sogolon
Bonjour à tous.
Merci "3stone" de votre réponse.
Mais cependant ce que je cherche ce n'est pas du tout ça. et je sais même
pas si c'est possible avec Access 2003.
Je vais préciser d'avantage.
Dans ma base de gestion de courrier (toujours et encore), j'utilise
automation pour rédiger mes lettres et autres télécopies.
Une partie du code:
'------------
Private Sub RédigerLettre_Click()

strCurrAppDir = "serverBases de données"
strFinalDoc = strCurrAppDir & "ModèlesLettre.dot"

Set objWord = CreateObject("Word.Application")
With objWord

.Visible = False

.Documents.Open (strCurrAppDir & "ModèlesLettre.dot")

.ActiveDocument.Bookmarks("DateduCourrier").Select
.Selection.Text = vbNullString & Forms!Courriersdéparts!DateduCourrier

.ActiveDocument.Bookmarks("NRef").Select
.Selection.Text = vbNullString & Forms!Courriersdéparts!NRef

.ETC.
'------------------
QUESTION:

Est-il possible d'indiquer à mon code l'emplacement de ma base "Base1" au
lieu d'avoir toujours à modifier mon code pour changer le chemin
"serverBases de données" si je déplace la base ou si le lecteur réseau
change?
Merci à toutes et tous
Et merci à "3stone"
A+...


'-------------------
'-------------------

Salut,

"Sogolon"
| Pour utiliser ma base en réseau je l'ai scindée en deux:
| - Base1 (contenant les tables placée dans un dossier partagé du réseau)
| - Base2 (Mon interface contenant le code et installée sur chaque poste client)
| Dans mon application j'ai besoin du chemin exact de l'emplacement de la Base1.
| (J'ai copié le chemin "serveurpartage"
| QUESTION:
| Dans la perspective de déplacement de ma Base "Base1" ou du changement de
| serveur, y'a-t-il une technique par VBA de désigner le chemin de
| l'emplacement de la Base "Base1".


Tu cherche comment refaire le lien vers les tables attachées par VBA ?

si oui, regarde ceci :
http://www.3stone.be/access/articles.php?lng=fr&pg(


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
3stone
Salut,

"Sogolon"
| Est-il possible d'indiquer à mon code l'emplacement de ma base "Base1" au
| lieu d'avoir toujours à modifier mon code pour changer le chemin
| "serverBases de données" si je déplace la base ou si le lecteur réseau
| change?


Regarde ceci dans ce cas :
http://groups.google.com/group/microsoft.public.fr.access/msg/5ea5855263d42ef4


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Sogolon
Merci encore "3stone"
J'ai fait un tour et lu les propos de Reymond mais mon problème est différent.
Dans mon premier post j'ai précisé avoir scindée ma base en deux:
Base "principal" (dans un répertoire partagé) et base "Frontal" (mon appli
mis à la disposition des postes de mon réseau).
Le bout de code que j'ai donné dans mon précédent post permet d'ouvrir un
modèle se trouve et se trouvera toujours dans le dossier contenant la base
"principal", or si je change de dossier je doit aussi modifier le code de mon
appli et changer toutes les version des postes clients. Je ne cherche pas à
refaire les liens avec les tables.
J'aimerai juste savoir s'il est possible pour Access (un moyen quelqu'il
soit) de localiser (de connaître) l'emplacement de ma base "principal".
merci encore de votre réponse. mais cherche toujours une solution si elle
existe.
Merci.
A+...


Salut,

"Sogolon"
| Est-il possible d'indiquer à mon code l'emplacement de ma base "Base1" au
| lieu d'avoir toujours à modifier mon code pour changer le chemin
| "serverBases de données" si je déplace la base ou si le lecteur réseau
| change?


Regarde ceci dans ce cas :
http://groups.google.com/group/microsoft.public.fr.access/msg/5ea5855263d42ef4


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
3stone
re,

"Sogolon"
[...]
| Je ne cherche pas à
| refaire les liens avec les tables.


ben si !!
si tu déplace la base dorsale (qui contient les tables) tu sera obligé de refaire les liens.
Je t'ai déjà indiqué comment faire !


| J'aimerai juste savoir s'il est possible pour Access (un moyen quelqu'il
| soit) de localiser (de connaître) l'emplacement de ma base "principal".

si TU la déplace, il n'y a que TOI qui sais ou elle se trouve dorénavant !

Comment pourrait-on se connecter à une dorsale sans savoir où elle se trouve ?
si ce n'est d'utiliser un lecteur réseaux que tu redéfini au besoin.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Sogolon
Merci encore.
Oui vous avez raison pour ce que vous dites.
Tout en espérant d'être bien comprise.
Je pars de ma base de données en un seule fichier (avant d'être scindée et
mise en exploitation).
J'aimerai préciser dans mon code VBA le chemin de l'emplacement de la base
"genre current projet parth je crois je n'en suis pas sûre il m'a semblé
l'avoir lu quelque mais je me rappelle plus où"
Je voudrai que pendant "l'installation", en choisissant l'emplacement de ma
base "principale" que le code soit mis à jour.
Est-ce c'est possible sinon quelle autre methode ou me conseillez-vous?
Merci beaucoup encore.
A+...



re,

"Sogolon"
[...]
| Je ne cherche pas à
| refaire les liens avec les tables.


ben si !!
si tu déplace la base dorsale (qui contient les tables) tu sera obligé de refaire les liens.
Je t'ai déjà indiqué comment faire !


| J'aimerai juste savoir s'il est possible pour Access (un moyen quelqu'il
| soit) de localiser (de connaître) l'emplacement de ma base "principal".

si TU la déplace, il n'y a que TOI qui sais ou elle se trouve dorénavant !

Comment pourrait-on se connecter à une dorsale sans savoir où elle se trouve ?
si ce n'est d'utiliser un lecteur réseaux que tu redéfini au besoin.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
3stone
re,

"Sogolon"
[...]
| J'aimerai préciser dans mon code VBA le chemin de l'emplacement de la base
| "genre current projet parth je crois je n'en suis pas sûre il m'a semblé
| l'avoir lu quelque mais je me rappelle plus où"


CurrentProject.Path

donne le chemin de la base frontale !


| Je voudrai que pendant "l'installation", en choisissant l'emplacement de ma
| base "principale"


Il faut liéer les tables (de la dorsale)


| que le code soit mis à jour.


quel code ?
Les tables liées sont adressées comme des tables locales
et aucun code n'est nécessaire (dès que les tables sont liées)

Si par la suite, la base dorsale est déplacée, il suffit de refaire le lien
vers les tables (avec le code déjà indiqué)


PS: Si tu ne comprends pas, il faut simplement faire un essai !!


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Sogolon
Bonjour et merci "3stone"
'---
CurrentProject.Path donne le chemin de la base frontale !
Dommage s'il y'avait une autre ligne comme ça mais qui donne le chemin de

la base principale, mon problème serait réglé.

Il faut liéer les tables (de la dorsale)
Avec l'utilitaire Access "Fractionner la base de données" je n'ai pas de

problème pour lier les tables car cette utilitaire le fait en fractionnant la
base.

quel code ?
Les tables liées sont adressées comme des tables locales
et aucun code n'est nécessaire (dès que les tables sont liées)
'------------

Private Sub RédigerLettre_Click()

strCurrAppDir = "serverBases de données"
strFinalDoc = strCurrAppDir & "ModèlesLettre.dot"

Set objWord = CreateObject("Word.Application")
With objWord

.Visible = False

.Documents.Open (strCurrAppDir & "ModèlesLettre.dot")

.ActiveDocument.Bookmarks("DateduCourrier").Select
.Selection.Text = vbNullString & Forms!Courriersdéparts!DateduCourrier

.ActiveDocument.Bookmarks("NRef").Select
.Selection.Text = vbNullString & Forms!Courriersdéparts!NRef

.ETC.
'------------------
Et j'appelle "installation" la phase de fractionnement de ma base: "les
données sur le réseau" et "l'application sur mon poste de travail( ensuite
copiée sur les autres)".
En fait je croyais et je le crois toujours qu'il était possible de remplacer:
strCurrAppDir = "serverBases de données"
Par une ligne du genre: strCurrAppDir = CurrentProject.Path
Maintenant que ma base frontale étant sur un disque local, s'il n'y pas de
solution je n'ai qu'à continuer comme je le fait: modifier le code de ma base
frontale pour mettre "strCurrAppDir = "Chemin réseau""
Merci quand même.
Salut à toutes et à tous.
A+...

Avatar
3stone
re,

"Sogolon"
| > CurrentProject.Path donne le chemin de la base frontale !
| Dommage s'il y'avait une autre ligne comme ça mais qui donne le chemin de
| la base principale, mon problème serait réglé.


Il faut réfléchir un peu avant d'écrire et particulièrement en informatique ;-)

Pour savoir ou se trouve la dorsale, il suffit de regarde la propriété "Connect"
mais, à *condition* que les tables soient liées !!!
Si tu déplace à un moment donné cette base dorsale, comment pourrait on
deviner ou elle se trouve ?? à moins de scaner tout le serveur !!



| > Il faut liéer les tables (de la dorsale)
| Avec l'utilitaire Access "Fractionner la base de données" je n'ai pas de
| problème pour lier les tables car cette utilitaire le fait en fractionnant la
| base.


Non !!!
"Fractionner la base de données" ne se fait qu'une seule fois !
D'ailleurs, cet assistant ne s'utilise que si l'on veux scinder la base
à posteriori. Alors que le mieux est de créer *dès le départ*
les deux bases nécessaires.

Plus tard, pour refaire le lien vers les tables, tu dois utiliser l'assistant
"Gestionnaire de tables liées" du même menu (en manuel)
ou la fonction que je t'indique depuis le début :
http://www.3stone.be/access/articles.php?lng=fr&pg(
qui te prends par la main pour refaire l'attachement.



| > quel code ?
| > Les tables liées sont adressées comme des tables locales
| > et aucun code n'est nécessaire (dès que les tables sont liées)
| '------------
| Private Sub RédigerLettre_Click()
|
| strCurrAppDir = "serverBases de données"
| strFinalDoc = strCurrAppDir & "ModèlesLettre.dot"


Non ! Ton code est mauvais, de là ton problème !!
Tu pars du principe que ta base se trouve à tel endroit et ce n'est pas bon.

Si ta lettre type se trouve sur le serveur dans le même répertoire
que la base, tu le retrouve par :

Chemin = CurrentDb.TableDefs("NomTableAttachée").Connect

pour autant que l'attachement des tables soit ok !
Sinon, refaire d'abord l'attachement comme indiqué plus haut.
D'ailleurs, le code indiqué est à lancer à chaque ouverture de la base
frontale. Ainsi, en cas de problème liens, la procédure de réattachement
est démarrée automatiquement.


NB :
C'est une mauvaise méthode d'écrire du code en se disant que l'on
trouvera des solutions au fur et à mesure du dévelloppement...
Toutes les "briques" du puzzle doivent avoir été testées et êtrent fonctionnelles.
Ce n'est qu'après que ces briques peuvent être rassemblées dans un projet.
Tu ne peux pas, par exemple, prévoir le fractionnement de ta base, si tu n'as
jamais mis cela en oeuvre et compris la méthode et son fonctionnement.


HTH
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Sogolon
Impécable. Merci.
Merci surtout pour les critiques et conseils.
Bravo "3stone"
A+...



re,

"Sogolon"
| > CurrentProject.Path donne le chemin de la base frontale !
| Dommage s'il y'avait une autre ligne comme ça mais qui donne le chemin de
| la base principale, mon problème serait réglé.


Il faut réfléchir un peu avant d'écrire et particulièrement en informatique ;-)

Pour savoir ou se trouve la dorsale, il suffit de regarde la propriété "Connect"
mais, à *condition* que les tables soient liées !!!
Si tu déplace à un moment donné cette base dorsale, comment pourrait on
deviner ou elle se trouve ?? à moins de scaner tout le serveur !!



| > Il faut liéer les tables (de la dorsale)
| Avec l'utilitaire Access "Fractionner la base de données" je n'ai pas de
| problème pour lier les tables car cette utilitaire le fait en fractionnant la
| base.


Non !!!
"Fractionner la base de données" ne se fait qu'une seule fois !
D'ailleurs, cet assistant ne s'utilise que si l'on veux scinder la base
à posteriori. Alors que le mieux est de créer *dès le départ*
les deux bases nécessaires.

Plus tard, pour refaire le lien vers les tables, tu dois utiliser l'assistant
"Gestionnaire de tables liées" du même menu (en manuel)
ou la fonction que je t'indique depuis le début :
http://www.3stone.be/access/articles.php?lng=fr&pg(
qui te prends par la main pour refaire l'attachement.



| > quel code ?
| > Les tables liées sont adressées comme des tables locales
| > et aucun code n'est nécessaire (dès que les tables sont liées)
| '------------
| Private Sub RédigerLettre_Click()
|
| strCurrAppDir = "serverBases de données"
| strFinalDoc = strCurrAppDir & "ModèlesLettre.dot"


Non ! Ton code est mauvais, de là ton problème !!
Tu pars du principe que ta base se trouve à tel endroit et ce n'est pas bon.

Si ta lettre type se trouve sur le serveur dans le même répertoire
que la base, tu le retrouve par :

Chemin = CurrentDb.TableDefs("NomTableAttachée").Connect

pour autant que l'attachement des tables soit ok !
Sinon, refaire d'abord l'attachement comme indiqué plus haut.
D'ailleurs, le code indiqué est à lancer à chaque ouverture de la base
frontale. Ainsi, en cas de problème liens, la procédure de réattachement
est démarrée automatiquement.


NB :
C'est une mauvaise méthode d'écrire du code en se disant que l'on
trouvera des solutions au fur et à mesure du dévelloppement...
Toutes les "briques" du puzzle doivent avoir été testées et êtrent fonctionnelles.
Ce n'est qu'après que ces briques peuvent être rassemblées dans un projet.
Tu ne peux pas, par exemple, prévoir le fractionnement de ta base, si tu n'as
jamais mis cela en oeuvre et compris la méthode et son fonctionnement.


HTH
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/