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 :

Comment mettre à jour une attache de table en VBA ?


Sujet :

VBA Access

  1. #1
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut Comment mettre à jour une attache de table en VBA ?
    Bonjour

    J'utilise Access 2000, et j'ai dans la le menu outil/utilitaire de base de données une application Gestionnaire de table liées.
    Je n'ai pas trouvé de documentation spécifique à cette fonctionnalité.
    Existe-t-il une possibilité de mettre à jour une attache en spécifiant le DSN, l'UID, le PWD etc. en VBA ?

    Merci d'avance

    EDIT : je ne parle pas seulement de mettre à jour des attaches de tables access comme expliqué dans http://dolphy35.developpez.com/artic...eseaux/#LVII-A, mais aussi de mettre à jour des attaches oracle, mysql, sybase...

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Le plus simple est de faire l'attache à la main puis de lancer le petit code suivant dans un module.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    debug.print currentdb.tabledefs("NomMaTableLiée").connect
    cela va t'afficher la chaîne de connexion utilisée, aprés tu peux modifier cette valeur pour l'adapter et utiliser la méthode .refreshlink de l'objet tabledef.

    Note tu peux changer de BD source mais pas de marque de BD (ex : tu ne peux pas passer d'une table Access à une table Oracle avec cette méthode.)

    A+

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    UN bout de code à adapter :
    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
    Function LiaisonTable(pStr_Repertoire) As Integer
    Dim LinkTest As Integer
    Dim Tabl As DAO.TableDef
     
        DoCmd.Hourglass True
        LiaisonTable = 1
        For Each Tabl In CurrentDb.TableDefs
            If Tabl.Connect <> "" Then
                If Tabl.Name = "tblVarianteOld" Then
                    Tabl.Connect = ";DATABASE=" & pStr_Repertoire & "Appli - Interface - Old.mdb"
                    On Error Resume Next
                    Tabl.RefreshLink
                    On Error GoTo 0
                Else
                    On Error GoTo Erreur
                    Tabl.Connect = ";DATABASE=" & pStr_Repertoire & "Appli - Data.mdb"
                    Tabl.RefreshLink
                End If
            End If
        Next
        DoCmd.Hourglass False
        LiaisonTable = 0
        Exit Function
    Erreur:
        DoCmd.Hourglass False
        LiaisonTable = 1
    End Function

  4. #4
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Merci beaucoup Kloun, mais ton code ne gère que les tables Access, j'en ai déjà un qui a cette possibilité.

    Merci pour la piste marot_r.
    Ca pose un petit problème pour les tables mysql, c'est que la création des tables attachées demande la confirmation du password et plante ensuite, ce qui n'est pas tellement compatible avec du batch.
    Je pense que le problème vient surtout du driver mysql, je vais investiguer et tester ta solution de .refreshlink.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Le code fourni en exemple peut-être utiliser quelque soit la source, c'est la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Tabl.Connect = ";DATABASE=" & pStr_Repertoire & "Appli - Interface - Old.mdb"
    qu'il faut adapter en fonction de la BD car c'est là que tu mets la chaîne de connexion.

    A+

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/09/2013, 12h23
  2. Réponses: 2
    Dernier message: 31/01/2012, 10h05
  3. Réponses: 12
    Dernier message: 14/06/2011, 10h48
  4. Mettre à jour une attache table
    Par PtitGénie dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/01/2009, 15h55
  5. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56

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