Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modélisation Discussion :

Relations entre bases différentes [AC-2016]


Sujet :

Modélisation

  1. #1
    Membre du Club
    Homme Profil pro
    Manager de projet (retraité)
    Inscrit en
    juillet 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Manager de projet (retraité)

    Informations forums :
    Inscription : juillet 2010
    Messages : 84
    Points : 58
    Points
    58
    Par défaut Relations entre bases différentes
    Bonjour à tous,

    J'ai un souci de relations entre bases Access différentes.

    Mon contexte actuel est le suivant :
    - le moteur (front-end) qui contient tous les objets Access sauf les tables et leurs relations,
    - une base par année (back-end = _be), chacune d'elles contenant par exemple la table T0 à laquelle sont connectées par relations les tables T1 et T2,
    - chaque année je recopie la base _be de l'année N en base N+1 et je purge les tables T1 et T2 mais pas T0.

    Pour de bonnes raisons j'aimerais sortir la table T0 et la mettre dans une base _be indépendante de manière à n'avoir que T1 et T2 à initialiser chaque année.
    Ca me ferait donc deux liaisons :
    - entre le moteur et _be (T1, T2) pour les années N et N+1 d'une part,
    - entre le moteur et _be (T0) quelque soit l'année d'autre part.

    J'ai fait l'essai et ça semble marcher. C'est bien ce qui m'inquiète car la vue des relations dans le moteur montre que le lien entre T0 et (T1 et T2) n'est pas rétabli.

    Bref : dois-je le rétablir par VBA dans la procédure d'établissement des liaisons qui me sert à coupler le moteur au _be de l'année choisie ?

    J'espère avoir été clair, sinon demandez-moi quelles précisions apporter.

    Merci de votre éclairage.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 587
    Points : 20 582
    Points
    20 582
    Par défaut
    Bonjour.

    Premièrement on ne peut pas avoir d'intégrité référentielle entre 2 bases Access.
    Tu peux avoir une relation mais pas l'intégrité.

    Et Access se base sur la propriété .Connect de l'objet TableDef pour trouver la source de données pour les tables "externes".
    Cette propriété est "gelée" lors de la création du lien de l donc si tu changes le nom de la base, Access ne la trouvera pas et il faudra refaire les liens.

    Maintenant si tu as un truc du genre :

    Front-End
    • BaseT0
    • BaseT1_2


    Que tu fais une copie de BaseT1_2 en BaseT1_2_2018
    Puis que tu vide Base_T1_2, le front end devrait continuer à fonctionner sans problème.

    Enfin habituellement on essaye d'éviter d'avoir à intervenir manuellement chaque année donc soit on ajoute une date aux données et on filtre sur cette date, soit on met en place du code pour "pousser" les données en archive puis les supprimées de la base "vivante".


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club
    Homme Profil pro
    Manager de projet (retraité)
    Inscrit en
    juillet 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Manager de projet (retraité)

    Informations forums :
    Inscription : juillet 2010
    Messages : 84
    Points : 58
    Points
    58
    Par défaut
    Merci pour ta réponse.

    Effectivement je n'avais pas pensé à la restriction sur l'intégrité référentielle, mais je pourrais peut-être m'en passer car je ne fais jamais de Delete sur T0.
    J'ai pensé à une autre solution pour maintenir malgré tout l'intégrité : laisser dans les bases _be-T1-T2 une souche de T0 qui ne contient que ses clés. A moi de gérer par du code la synchro de la souche avec la vraie table T0. Qu'en penses-tu ?

    D'autre part, par rapport à ta préconisation :
    Je n'ai pas compris ce que tu veux dire par "Front-End : BaseT0 , Base T1_2" ? Les tables sont normalement dans le Back-End, non ?
    En fin d'exercice comptable on navigue entre l'année N et l'année N+1, et je me demande si on n'a pas le même problème mais dans l'autre sens avec la BaseT1_2.

    A suivre.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 587
    Points : 20 582
    Points
    20 582
    Par défaut
    Citation Envoyé par arundel Voir le message
    Merci pour ta réponse.
    À moi de gérer par du code la synchro de la souche avec la vraie table T0. Qu'en penses-tu ?
    Moins tu as de "pièces" dans ton application, moins il y a de risque de panne.
    Perso, je ne serai pas très chaud à cette méthode mais cela dépend aussi de comment tu ferai ta synchro.

    D'autre part, par rapport à ta préconisation :
    Je n'ai pas compris ce que tu veux dire par "Front-End : BaseT0 , Base T1_2" ? Les tables sont normalement dans le Back-End, non ?
    Oui, BaseT0 et BaseT1_2 sont tes back-ends.

    En fin d'exercice comptable on navigue entre l'année N et l'année N+1, et je me demande si on n'a pas le même problème mais dans l'autre sens avec la BaseT1_2.
    Désolé je ne comprends pas.

    Mais comme je l'ai dit, il est plus simple de filtrer sur une date que de basculer d'une BD à une autre.
    Si tu ne travailles jamais que sur 2 exercices au max, tu pourrais envisager de ne garder que cela et pousser les données plus vielles dans une BD d'archive.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre du Club
    Homme Profil pro
    Manager de projet (retraité)
    Inscrit en
    juillet 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Manager de projet (retraité)

    Informations forums :
    Inscription : juillet 2010
    Messages : 84
    Points : 58
    Points
    58
    Par défaut
    Bon je vais réfléchir à tout ça.

    Merci pour tes conseils.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/10/2011, 09h08
  2. relation entre les différents callbacks des bouttons
    Par maissaab dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 22/07/2010, 21h12
  3. [AC-2000] Gestion des imports-exports en SQL entre bases différentes
    Par Gabout dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/06/2009, 18h06
  4. [Toutes versions] Copie entre bases différentes
    Par Gabout dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/06/2009, 11h58
  5. Relation entre tables dans bdd différentes
    Par Mandotnet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/03/2006, 09h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo