IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

VBA Access Discussion :

[VBA]Liaison des tables


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 29
    Points
    29
    Par défaut [VBA]Liaison des tables
    Bonjour,

    Je me suis servi de cette discussion car je me trouvais dans le même cas de figure que MsnSylvain.

    Cela fonctionne parfaitement jusqu'au moment ou j'ai ajouté de nouvelles tables liées mais provenant d'un .mdb différent de celui renfermant les tables utilisées jusqu'à maintenant.

    J'ai essayé de m'en sortir par plusieurs manip mais en vain. Voici l'état actuel de mon code :

    Formulaire de démarrage (sur ouverture) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Private Sub Form_Open(Cancel As Integer)
     
    Dim strTLPrometheeReseau As String
    Dim strTLPrometheeLocal As String
    Dim strTLDaedalusReseau As String
    Dim strTLDaedalusLocal As String
    Dim intChoix As Integer
     
    retour:
    strTLPrometheeReseau = ""
    strTLPrometheeLocal = ""
    strTLDaedalusReseau = ""
    strTLDaedalusLocal = ""
     
    On Error Resume Next
     
    strTLPrometheeReseau = Dir("\\CBEHOM58\tlebouvi$\Mes documents\TLAtlantis\Réseau\testcode.mdb")
    strTLPrometheeLocal = Dir("\\CBEHOM58\tlebouvi$\Mes documents\TLAtlantis\Local\testcode.mdb")
    strTLDaedalusReseau = Dir("\\CBEHOM58\tlebouvi$\Mes documents\TLAtlantis\Réseau\BdMultiCritere.mdb")
    strTLDaedalusLocal = Dir("\\CBEHOM58\tlebouvi$\Mes documents\TLAtlantis\Local\BdMultiCritere.mdb")
     
    On Error GoTo 0
     
    If strTLPrometheeReseau <> "" Then
       TLPrometheeReseau
       TLDaedalusReseau
    Else
       intChoix = MsgBox("La base réseau ne peut être jointe. Vérifier votre connexion réseau. Cliquez sur Oui pour réessayer, sur non pour vous connecter à une base locales (pour maintenance seulement) ou sur annuler pour abandonner", vbYesNoCancel, "Avertissement connexion:")
       If intChoix = vbYes Then
          GoTo retour
       ElseIf intChoix = vbCancel Then
          DoCmd.Close
       Else
          If strTLPrometheeLocal <> "" Then
             TLPrometheeLocal
             TLDaedalusLocal
          Else
             MsgBox "Aucune Base disponible, réessayer lorsque le réseau sera connecté"
     
          End If
     
       End If
    End If
     
    End Sub
    et modules de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Option Compare Database
     
    Function fRediriger_donnees(arg_chemin As String) As Boolean
     
     
        Dim Var As Variant
        Dim I As Integer
        Dim Tdf As TableDef
        Dim Db As Database
     
     
        On Error GoTo fRediriger_donnees_Exit
     
     
        fRediriger_donnees = False
        Set Db = CurrentDb
        Var = SysCmd(SYSCMD_INITMETER, "Patientez !!! Réorganisation en cours des données...", Db.TableDefs.Count)
        For I = 0 To Db.TableDefs.Count - 1
            Set Tdf = Db.TableDefs(I)
            If Tdf.Connect & "" <> "" Then 'la table est attachée
                Tdf.Connect = ";DATABASE=" & arg_chemin
                Tdf.Refreshlink
            End If
            Set Tdf = Nothing
            Var = SysCmd(SYSCMD_UPDATEMETER, I)
        Next I
        fRediriger_donnees = True
     
     
    fRediriger_donnees_Exit:
        Var = SysCmd(SYSCMD_REMOVEMETER)
        Set Db = Nothing
        Set Tdf = Nothing
        Exit Function
     
    fRediriger_donnees_Error:
        fRediriger_donnees = False
        GoTo fRediriger_donnees_Exit
     
    End Function
     
    Sub TLPrometheeLocal()
    fRediriger_donnees ("\\CBEHOM58\tlebouvi$\Mes documents\TLAtlantis\Local\testcode.mdb")
    End Sub
    Sub TLPrometheeReseau()
    fRediriger_donnees ("\\CBEHOM58\tlebouvi$\Mes documents\TLAtlantis\Réseau\testcode.mdb")
    End Sub
    Sub TLDaedalusLocal()
    fRediriger_donnees ("\\CBEHOM58\tlebouvi$\Mes documents\TLAtlantis\Local\BdMultiCritere.mdb")
    End Sub
    Sub TLDaedalusReseau()
    fRediriger_donnees ("\\CBEHOM58\tlebouvi$\Mes documents\TLAtlantis\Réseau\BdMultiCritere.mdb")
    End Sub
    mais je manque de connaissance en VBA (grammaire ET dictionnaire).

    Quelqu'un peut'il me mettre sur la voie SVP.
    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Merci à Dolphy35 d'avoir transférer mon problème dans une nouvelle discussion.

    Je fais donc une petite bafouille pour expliquer le problème depuis le début (post d'origine).

    Je travaille sur une base "appli" qui est liée à une base "data" au boulot. Donc chemin réseau et quand j'emporte les deux fichiers chez moi pour bosser, je dois relier les tables à nouveau.

    Avec la discussion que j'avais pris en cours et précédemment mis le message ci-dessus j'étais arrivé à mettre à jour les liaisons.
    Mais cela ne fonctionne plus depuis que j'ai de nouvelles tables liées provenant d'un d'une seconde base "data" ... (reprendre mon message d'ouverture).

    Voilà, merci d'avance de votre aide.

  3. #3
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    re Salut TLImpala,

    regarde ce tuto il pourrait t'intérreser :

    Comment utiliser une application en mode multi-utilisateurs

    Dolphy

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Merci Dolphy pour le lien vers le tuto.

    Si je comprend bien, le résultat de la manip est que lorsque je vais être chez moi le chemin ayant changé, j'aurais une fenêtre qui me demandera de redonner le chemin de la dorsale ? Un peu comme quand on utilise l'assistant de table liée ? et que lorsque je redéposerai frontale et dorsale au boulot j'aurai à nouveau à relier ?

    A l'aide de la discussion précédente, LedZepII et MsnSylvain étaient parvenus à ce que le code mette à jour automatiquement les liaisons selon le principe (je suis au boulot, l'appli applique le chemin réseau du boulot à chaque démarrage ; je suis chez moi, chemin incorrect -> application du chemin "local" après msgbox d'avertissement) ; et cela fonctionne très bien

    Mon problème vient du fait que ça ne fonctionne plus si mes tables liées viennent de différent .mdb dorsaux.

    En attendant comme j'ai environ 70 tables à lier à chaque fois vers 5 dorsales, j'ai contourné le problème en redémarrant un vieux PII 450 et en le nommant comme mon pc "serveur" du boulot.

  5. #5
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    Salut,

    Si tu utilise 5 bdd dorsales c'est normale que le code de ton premier post ne fonctionne pas, dans le code tu mets à jours vers 1 seule dorsale soit sur le serveur 1 soit sur le serveur 2, le chemin vers la bdd dorsale est rentré en dur dans le code, si tu veux mettre à jour avec les autres bdd il faut renseigner le chemin et nom des autres bdd.

    dans le tuto, l'exemple est à l'ouverture un bd demande la nouvelle liaison, mais cela peut être autrement.

    Si tu veux que l'on t'aide il faut être plus précis sur ce que tu veux exactement :

    Tu as une bdd Frontale qui possède des tables liées vers 5 bdd Dorsales.
    Tu veux mettre à jour les liaisons en automaique selon si tu te trouve chez toi ou à ton boulot.
    1. Les bdd Dorsales possèdent-elles le même nombre de table à chaque fois ?
    2. Y aura t-il des evolutions sur le bdd Dorsales ?
    3. Qu'échange tu exactement entre le boulot et toi les bdd Dorsales et la Frontale ?
    Dolphy

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Re,

    Effectivement,
    J'ai une bdd Frontale qui possède des tables liées vers 5 bdd Dorsales.
    Je veux mettre à jour les liaisons en automatique avec le chemin réseau du boulot ou de chez moi.

    Les bdd Dorsales ne possèdent pas le même nombre de tables et il y aura certainement des ajouts de tables ultérieures dans les dorsales.

    C'est principalement la base frontale sur laquelle je bosse chez moi,
    mais il m'arrive de temps en temps de faire un peu de saisie de données donc de remplir les dorsales (tant que le projet n'est pas vraiment démarré et que les données des dorsales ne sont pas modifiées pendant mon absence).

    J'ai essayé de modifier le code pour faire référence aux chemins des 5 bases dorsales mais en vain. Je crains que mon ignorance en VBA me pose de plus en plus de problèmes sur ce projet.

    J'espère avoir été plus clair et merci en tout cas de suivre cette discussion.

  7. #7
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    Salut,

    Ce que tu demande nécéssite du code :

    Il faut te connecter aux différentes bdd afin de lister les tables et de comparer avec ta Frontale pour savoir si il n'y a pas eu d'ajout.

    si ce que tu veux est pendant le developpement des bdd je te conseil simplement de faire les liaisons à la main acr le code que tu veux est ardu.

    Dolphy

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    Ok Dolphy,

    Merci pour tout. Vu le nombre important de table je vais donc garder mon joker du pc dédié qui simule le chemin réseau du boulot ; ça fera l'affaire .

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/08/2008, 16h59
  2. Securité - Bloquer liaison des tables -
    Par Sam 069 dans le forum Sécurité
    Réponses: 2
    Dernier message: 09/01/2007, 11h18
  3. Réponses: 2
    Dernier message: 06/10/2006, 11h16
  4. Réponses: 8
    Dernier message: 30/08/2006, 17h22
  5. Réponses: 2
    Dernier message: 12/05/2006, 09h35

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