|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
Bonjour tout le monde,
En supposant que mes 2 bases sont enregistrées dans le même dossier, je recherche le moyen (si bien sûr c'est possible) de lier une base A à une base B, sans avoir à spécifier le chemin d'accès complet, mais seulement en donnat le nom de la base A. Mon but est de pouvoir copier les 2 bases sur un autre PC, et de ne pas avoir à chaque fois à relier les 2 bases (vu que le chemin d'accès diffère) pour pouvoir les utiliser. Je vous remercie par avance pour votre aide |
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour,
Tu peux prendre connaissance de ce tutoriel, cela devrait répondre à ton besoin : Liaisons dynamiques pour bases fractionnées. Domi2
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor) Ici, on ne perd pas de temps ! On en passe... Ce message (ou un autre) vous a aidé ? Votez pour lui avec
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
merci beaucoup pour ta réponse Domi2
vu le but de mon projet (utiliser SQL et QBE sur 2 tables liées), je n'ai pas réellement besoin d'une gestion aussi performante des bases liées. De plus, je ne connais pas VBA, et le temps me manque pour apprendre ce langage... En fait, j'ai pu lire qu'on pouvait utiliser les chemins relatifs au lieu de ceux absolus pour lier 2 bases : - en ouvrant la feuille Propriété de la Requête - avant d'effectuer le choix de la table on modifie le champ Base source et il était dit qu'il fallait faire attention à la valeur du Dossier de la base de données par défaut qui est implicitement pris en compte. J'ai donc enregistré mes 2 bases (Base1 et Base2) dans le même dossier. Puis pour créer une requête dans Base1 (en utilisant des tables de Base2) j'ai tapé "Base2" dans l'attribut Base source de la feuille de propriétés, mais cela ne marche pas... j'ai aussi essayé "Base2.accdb"... (je suis sous Access 2007) Je vous remercie par avance pour votre aide |
|
|
00
|
|
|
#4 |
![]() ![]() Jean BALLATInscription : octobre 2004 Messages : 2 856 ![]() |
![]() Un manière simple d'éviter d'entrer dans un développement VBA, c'est de faire sur le second PC une arborescence identique que celle du PC sur lequel tu développes. Imaginons que sur ton poste, tu développes la base BASE1 avec des tables liées issues de la BASE2. Tes bases sont stockées dans le même répertoire : C:\Mes Documents\Developpez Ainsi la première fois que tu recopies tes bases sur le second PC tu crées la même arborescence. Tu ne devrais pas avoir de problème par la suite.
__________________
Jeannot Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., [B]Sources VBA Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre
|
|
|
00
|
|
|
#5 | ||||
|
Membre éprouvé
![]() Robert LINCEConseiller psycho-pédagogique Inscription : octobre 2007 Messages : 281 ![]() |
Bonjour.
Sans apprendre tout VBA D'abord, la fonction qui récupère le chemin du répertoire courant: Code :
Code :
Cordialement |
||||
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
merci pour ta réponse Jeannot45
RobiPMS je te remercie pour ton aide je rencontre quelques difficultées pour mettre en place le code : j'ai ouvert mon formulaire : Feuille de Propriétés-> Evènement->sur activation->générateur de code puis j'ai copié tes 2 fonctions dans : Code :
je ne sais pas si j'ai fait n'importe quoi... merci par avance pour votre aide |
||
|
|
00
|
|
|
#7 |
![]() ![]() |
Bonjour,
La première fonction, tu dois la copier dans un module de code standard et non dans le module du formulaire. Et la deuxième procédure, tu dois la copier non pas dans l'événement Sur activation, Form_Current, mais dans l'événement Sur ouverture, Form_Open. Ca devrait aller mieux. Domi2
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor) Ici, on ne perd pas de temps ! On en passe... Ce message (ou un autre) vous a aidé ? Votez pour lui avec
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
merci Domi2
j'ai fais les changements adéquats, mais il ne se passe toujours rien. j'ai juste enregistré les 2 fonctions aux bons endroits (je ne pense pas avoir fait d'erreur sur les noms des tables et des bases, car j'ai repris les mêmes que dans le code de RobiPMS pour éviter des erreurs et tester le code), mais y a-t-il une manip générale essentielle ou des changements importants à faire dans le code VBA pour que ça fonctionne ? merci pour votre aide |
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() Inscription : décembre 2011 Messages : 566 ![]() |
Bonjour,
Citation:
Sinon pour la demande initiale d'avoir le même chemin pour chaque base, quelque soit le PC, il est également possible d'utiliser les liens symbolique vers un dossier. lien symbolique. Avec des liens symboliques ou des jonctions de partitions, il est même possible de faire pointer un lien vers une autre partition, sans qu'un programme ne soit perturbé. |
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
merci pour ta réponse BlueMonkey
au niveau des liens symboliques (à moins d'avoir mal compris), si je change de répertoire mes 2 bases, alors je dois recréer le lien symbolique non? et en enregistrant mes 2 bases sur un autre pc, je dois créer le lien symbolique aussi sur le 2ème pc ? |
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() Inscription : décembre 2011 Messages : 566 ![]() |
Citation:
Citation:
Il faut bien voir que les liens permette juste de rendre transparent le fait qu'on travaille, sur dans un répertoire ou un autre. Rien de plus.exemple : on travaille sur plusieurs version d'une base ou d'un logiciel. Pour passer d'une version à l'autre, il suffit de changer le lien symbolique pour pointer sur la version souhaitée. |
||
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
d'accord merci BlueMonkey
je vais peut-être me répéter, mais mon but est de remettre mes 2 bases liées à une personne, et qu'une fois qu'elle les aura enregistrées sur son pc qu'elle n'ait pas à relier les 2 tables de mes 2 bases pour executer les requêtes. donc le mieux c'est peut-être le code VBA, mais je n'arrive pas à le faire fonctionner... et si j'ai bien compris je n'ai rien à faire de plus que d'enregistrer les 2 fonctions de RobiPMS ? en enlevant la sécurité : Access m'affiche le formulaire que j'ai mis par défaut à l'ouverture de ma base. Je l'ai donc fermé, ainsi que celui sur ma table1. Puis en voulant rouvrir le formulaire de table1 j'ai le message suivant : "Le moteur de bases de données n'a pas pu verrouiller la table "Table1" car elle est déjà utilisée par une autre personne ou un autre processus." serait-ce la source du problème? merci par avance pour votre aide |
|
|
00
|
|
|
#13 | |
|
Membre Expert
![]() Inscription : décembre 2011 Messages : 566 ![]() |
Citation:
Si ça ne fonctionne pas. Essaye en fermant la session Windows. Enfin si rien de cela fonctionne, essaye un compactage (réparation induite |
|
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
merci BlueMonkey!
je crois que je m'embourbe dans ce code VBA, que je n'ai peut-être pas assez adapté. De plus, j'ai retrouvé de la doc sur ma 1ère méthode dont le but est que les tables de Base2 n'apparaissent pas dans Base1 (ce qui n'était pas le cas car j'utilisais l'importation sous Access) : mettre dans "Base source" de la feuille de propriétés d'une requête le nom de ma 2ème base, et il faut (ce que je n'avais pas fait) pour utiliser les champs faire précéder leur nom par le nom de la 2ème base (dans le code SQL) : exemple : Base2.Table1.Prenom néanmoins le fichier doit se trouver dans C:\Users\sophie\documents donc je le mets à cet endroit, mais quand j'execute Access me dit : "Fichier C:\Users\sophie\documents\Base2.mdb introuvable" je pense que tout cela est due à l'extension... mais pourquoi veut-il un ".mdb" (extension anglaise?) au lieu d'un ".accdb"? que puis-je faire (j'arrive pas à changer cette extension)? merci par avance pour votre aide |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 39 ![]() |
Bonjour,
je viens de trouver que l'extension ".mdb" correspond à Access 2002-2003, j'ai donc enregistré ma 2ème base en Access 2002-2003. Quand j'exécute ma requête dans Base1 utilisant une table de Base2 ça fonctionne. Néanmoins Base2 doit contenir un mot de passe à l'ouverture, et quand j'en mets un, la requête dans Base1 ne fonctionne plus : j'ai le message "Mot de passe non valide", alors qu'on ne m'a demandé à aucun moment d'entrer le mot de passe de la 2ème base pour exécuter ma requête. Auriez vous une idée ? merci par avance je demande aussi si passer d'Access 2007 à 2002-2003 implique d'importantes pertes de fonctionnalité de ma base ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com