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 :

Rafraîchissement automatique des liaisons des tables attachées


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut Rafraîchissement automatique des liaisons des tables attachées
    Bonjour

    J'aimerais trouver un script qui permet de mettre à jour les liaisons, sauf que cela fonctionne via un puisque c'est le cas où on à un front office et un back office. (http://www.3stone.be/access/articles.php?lng=fr&pg=28)

    Or, mon fichier(unique) comporte des tables lieés et d'autres non , donc j'aimerais qu'au démarrage du formulaire, les liaisons soient automatiquement remises à jour ( un bon refresh quoi ^^ ) pour que le WSID s'adapte au PC sur lequel le fichier est lancé.

    Merci beaucoup

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2007
    Messages : 184
    Par défaut
    bonjour,
    Fais un essai avec ce code.
    Je l'utilise tous les jours (Access97 - 2000 - 2003)

    Usage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Function ModifAttache(lechemincompletdelabase)

    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
    Function fGetLinkPath(strTable As String) As String
    Dim dbs As Database, stPath As String
     
        Set dbs = CurrentDb()
        On Error Resume Next
        stPath = dbs.TableDefs(strTable).Connect
        If stPath = "" Then
            fGetLinkPath = vbNullString
            'can change this to currentdb.name
        Else
            fGetLinkPath = Right(stPath, Len(stPath) _
                            - (InStr(1, stPath, "DATABASE=") + 8))
        End If
        Set dbs = Nothing
    End Function
     
     
    Function ModifAttache(strDBPath)
    ' Modification simple des attaches
    ' sur le modèle de fGetLinkPath de Dev Ashish
    ' 21/07/2005
        Dim vieuxnom As String, stPath As String
        Dim loTd As TableDef
        Dim dbs As Database
        Dim I As Integer, nb As Integer
        I = 0
        CurrentDb.TableDefs.Refresh
        ' nb de table
        nb = CurrentDb.TableDefs.Count
     
     
        For Each loTd In CurrentDb.TableDefs
            On Error Resume Next
           stPath = dbs.TableDefs(loTd.Name).Connect
           If stPath = Null Then
            Else
                I = I + 1
                vieuxnom = fGetLinkPath(loTd.Name)
                loTd.Connect = ";Database=" & strDBPath    
                loTd.RefreshLink
            Debug.Print loTd.Name; " "; fGetLinkPath(loTd.Name); " à la place de : "; vieuxnom
     
            End If
        Next loTd
        Set loTd = Nothing
        CurrentDb.TableDefs.Refresh
        MsgBox "Terminé." & vbCrLf & I & " tables attachées pointent désormais vers la base de données " & strDBPath, vbOKOnly, "Procédure terminée avec succés"
    End Function
    cordialement,
    FEVEC

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut
    Merci mais je ne suis pas sur que cela me corresponde.

    Mes tables liées sont sur un serveur SQL 2000.

    En fait dans Access je peux "mettre à jour" les liaisons et cela correspond à ce que je cherche mais j'aimerais l'automatiser, pour ne pas que l'utilisateur ait à le faire lui même.


  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2007
    Messages : 184
    Par défaut
    Bonjour,
    si j'ai bien compris la situation...

    A chaque démarrage, Par une macro Autoexec (par exemple), lancement du code qui réattache les tables avec la source de données.

    cordialement,
    fevec

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut
    Citation Envoyé par fevec Voir le message
    Bonjour,
    si j'ai bien compris la situation...

    A chaque démarrage, Par une macro Autoexec (par exemple), lancement du code qui réattache les tables avec la source de données.

    cordialement,
    fevec
    Tout à fait. J'ai la moitié des tables qui sont sur Server SQL donc j'aimerais qu'il réattache ces tables à chaque lancement de programme.

    Merci

  6. #6
    Membre éclairé Avatar de 5GPCISAS1
    Inscrit en
    Novembre 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Novembre 2007
    Messages : 85
    Par défaut
    Moi j'utilise ce code dans un module que j'applique sur l'ouverture de mon formulaire d'entrée (version 2003);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function Initialisation()
     
        Dim SQL As String
        Dim SQL1 As String
     
        SQL = "DELETE [Ta_Table].* FROM [Ta_Table]"
        SQL1 = "INSERT INTO  SELECT [Table_Liée].*  FROM [Table_Liée] IN 'Chemin_de_la-Table_Liée.mdb'"
     
        DoCmd.RunSQL SQL
        DoCmd.RunSQL SQL1
     
    End Function
    J'espère que ça peut t'aider

Discussions similaires

  1. [AC-2003] Perte des liaisons de table au démarrage
    Par stigma dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/06/2009, 11h49
  2. Résultats avec des liaisons de table.
    Par kro001 dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/10/2007, 12h29
  3. Export des commentaires des champs de table en mode création
    Par zigzagzoug dans le forum Modélisation
    Réponses: 5
    Dernier message: 11/10/2007, 17h50
  4. Numérotation automatique et liaison de table
    Par idic0 dans le forum Modélisation
    Réponses: 1
    Dernier message: 25/06/2007, 11h40
  5. Réponses: 2
    Dernier message: 06/10/2006, 10h16

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