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 :

Gestionnaire de table liées


Sujet :

VBA Access

  1. #1
    Membre averti Avatar de Oliv'83
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Mars 2008
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2008
    Messages : 421
    Points : 309
    Points
    309
    Par défaut Gestionnaire de table liées
    Bonjour à tous,

    J'ai une question simple qui pourrait me simplifier le travail.

    Aujourd'hui je travaille dans un bureau qui n'est pas relié au réseau qui utilise la base que je développe. J'ai scindé ma base et je développe mon appli avec une copie de la dorsale qui me sert de support. J'ai donc pour mon developpement des adresses de tables qui sont en locale (sur mon PC) et quand je veux installer les MAJ sur le réseau je suis obligé de me déplacer avec mon portable puisque je n'ai que des versions runtime sur mes postes utilisateurs.

    Aujourd'hui (je suis sous Access 2007) pour mettre à jour les chemins de mes tables je clique sur Gestionnaire de tables liées et Access me propose de parcourir mon reseau pour mettre à jour les chemins.
    Or les adresses des tables sont toujours les mêmes sur ce réseau, je voudrais savoir si on ne pourrait pas plutôt taper les adresses "manuellement" ce qui me permetterait de ne me déplacer qu'avec une clé USB ma frontale de MAJ dedans.

    Je ne suis pas sur d'avoir été clair...

    Merci d'avance

    Oliv'

  2. #2
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Ayant travaillé en local aussi, pour les tables liées, je me suis arrangé pour qu'a chaque lancement, le lien avec les tables soit valide.
    D'ou ma fonction :
    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
     
    Private Sub VerificationTablesLiees()
    Dim inexistant As Boolean
    Dim nouveaufichier As String
    Dim ancienchemin As String
    ' verifier les tables
     
    Dim oDb As DAO.Database
    Dim oTbl As DAO.TableDef
    inexistant = False
     
    Set oDb = CurrentDb
    'Pour chaque table
    For Each oTbl In oDb.TableDefs
     'Si la table est liée alors afficher son nom
     If oTbl.Attributes And dbAttachedTable Then
        If existeFileFSO(Mid$(oTbl.Connect, 11)) = False Then
            inexistant = True
            ancienchemin = Mid$(oTbl.Connect, 11)
        End If
     End If
    Next oTbl
     
    If inexistant = True Then
        MsgBox "Base de données Dorsal non trouvé !" & vbCrLf & ancienchemin & vbCrLf & "Veuillez la sélectionner dans son nouvel emplacement.", vbInformation + vbOKOnly
        nouveaufichier = OuvrirUnFichier(Me.Hwnd, "Parcourir", 1, "Base de données", "mdb")
        If Len(nouveaufichier) < 1 Then Exit Sub
         For Each oTbl In oDb.TableDefs
     
         If oTbl.Attributes And dbAttachedTable Then
            If existeFileFSO(Mid$(oTbl.Connect, 11)) = False Then
               ' redefinition de la table
                oTbl.Connect = ";DATABASE=" & nouveaufichier
                oTbl.RefreshLink
            End If
         End If
        Next oTbl
        MsgBox "Mise à jour de la base de données effectuer"
    End If
     
    End Sub
    Moi j'ai fait le choix de demander la ou se trouvait le fichier dorsal, a toi ensuite de l'adapter

    Cordialement,

    lanonyme

  3. #3
    Membre averti Avatar de Oliv'83
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Mars 2008
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2008
    Messages : 421
    Points : 309
    Points
    309
    Par défaut
    Salut lanonyme

    Merci de ton aide.

    J'ai bien recopié ton code mais VB m'indique
    "Erreur de compilation :
    Attendu : numéro de ligne ou étiquette ou instruction ou fin d'instruction"

    concernant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            (Mid$(oTbl.Connect, 10))
    J'avoue que mes connaissances en VB sont largement insuffisantes pour être capable de corriger l'erreur puisque je ne comprends pas le code

    Donc là je suis coincé...

    Merci d'avance

    Oliv'

  4. #4
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    L'erreur vient de moi

    la ligne ou y'a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Mid$(oTbl.Connect, 10))
    est a supprimer.
    En effet celle ci est juste la fin d'un code commenté, manque l'apostrophe devant
    Je vais éditer mon premier post.

    Cordialement,

    lanonyme

  5. #5
    Membre averti Avatar de Oliv'83
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Mars 2008
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2008
    Messages : 421
    Points : 309
    Points
    309
    Par défaut
    Je ne voudrais pas avoir l'air d'abuser mais maintenant c'est à la ligne suivante que j'ai un problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If existeFileFSO(Mid$(oTbl.Connect, 11)) = False Then
    J'ai droit à :

    "Erreur de compilation :
    Sub ou Fonction non définie"

    avec existeFileFSO en surligné bleu.

    Là encore je ne connais pas cette instruction...

    Bonne soirée

    Oliv'

  6. #6
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Décidement j'ai beaucoup de mal cette semaine.

    Cette fonction, je l'ai est trouvé dans la FAQ (ICI) à mettre dans un module.

    Ensuite, y'a la fonction OuvrirUnFichier, qui est aussi sorti de la FAQ (ICI) à mettre dans le module.

    Voila, j'ai rien vu d'autre qui pourrai causé d'erreur

    Cordialement,

    lanonyme

  7. #7
    Membre averti Avatar de Oliv'83
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Mars 2008
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2008
    Messages : 421
    Points : 309
    Points
    309
    Par défaut
    Bonsoir

    La bonne nouvelle c'est que cela semble fonctionner.

    J'ai juste du faire une légère modif. Dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function existeFileFSO(ByVal fichier As String) As Boolean
     
    Dim fs As Variant
    Set fs = CreateObject("Scripting.FileSystemObject")
    existeFileFSO = fs.FileExists(fichier)
    Set fs = Nothing
     
    End Function
    J'ai rajouté la ligne
    Dim fs As Variant

    Sinon cela ne fonctionnait pas. Est-ce normal? J'ai mis variant parce que String ne marchait pas non plus...


    Je me demande si il ne faudrait pas créer un message avec l'ensemble des codes pour simplifier le travail d'un autre forumer aussi néophyte que moi??? Je suis prêt à le faire si l'on m'en donne "l'autorisation".

    Bonne soirée

    Oliv'

    P.S. Je presserai le bouton résolu dès que j'aurais la réponse à ma dernière question

  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 765
    Points
    7 765
    Par défaut
    Bonsoir,

    quelques réponses à tes interrogation.

    J'ai rajouté la ligne
    Dim fs As Variant

    Sinon cela ne fonctionnait pas. Est-ce normal?
    Oui. Tu as l'option Explicit dans ton module de code (tout en haut).
    Cela signifie que tu dois déclarer une variable avant pouvoir l'utiliser.
    Si l'instruction Option Explicit apparaît dans un module, vous devez déclarer explicitement toutes les variables à l'aide des instructions Dim, Private, Public, ReDim ou Static. Si vous tentez d'utiliser un nom de variable non déclarée, une erreur se produit à la compilation.
    est plus adapté car CreateObject renvoie un objet.

    Je me demande si il ne faudrait pas créer un message avec l'ensemble des codes pour simplifier le travail d'un autre forumer aussi néophyte que moi???
    C'est dans la faq Rétablir les liaisons des tables liées après déplacement d'une base fractionnée
    et dans le tutoriel de Dolphy35 Comment utiliser une application en mode multi-utilisateurs


    A+

  9. #9
    Membre averti Avatar de Oliv'83
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Mars 2008
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2008
    Messages : 421
    Points : 309
    Points
    309
    Par défaut
    Un grand MERCI pour ces précisions,

    Je crois que maintenant tout est dit et chacun pourra adapter son code à son projet.

    Bonne journée à tous

    Oliv'

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

Discussions similaires

  1. Gestionnaire de tables liées
    Par mouaa dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/03/2008, 14h04
  2. Gestionnaire de tables liées
    Par J. Fribourg dans le forum Access
    Réponses: 1
    Dernier message: 06/12/2007, 03h35
  3. Gestionnaire de tables liées
    Par seljack dans le forum Access
    Réponses: 1
    Dernier message: 07/08/2006, 14h00
  4. Gestionnaire de tables liées
    Par LeSuisse1 dans le forum Access
    Réponses: 3
    Dernier message: 30/03/2006, 11h17
  5. problème avec le gestionnaire de tables liées
    Par progima dans le forum Access
    Réponses: 3
    Dernier message: 30/11/2005, 11h40

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