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 :

Liaison des tables avec SQL Server [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut Liaison des tables avec SQL Server
    Bonjour à tous,

    J'ai une application Access 2003 qu'utilise une base de donnés SQL Server.

    Dans mon SQL Server, j'ai deux bases: BASE_prod (où sont stockées les tables de mon application) et une autre base BASE_test (la même base pour faire des tests).

    Je demande donc s'il y aurait une façon de "relier" les tables de BASE_prod vers BASE_test par code VBA, sans être obligé d'ouvrir l'aaplication en mode d'édition et utiliser le menu Outils/Utilitaire de base de donnés/Gestionaire des tables liées.

    Merci d'avance pour vos réponses,
    Marc

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 554
    Points
    24 554
    Par défaut
    Bonjour,
    Effectivement tu peux faire les attaches via le code.

    Il te faut utiliser DAO pour cela.

    Regarde le tuto sur DAO et notamment l'objet Tabledefs.

    Il te faut également la string de connection à mettre dans la propriété Connect.

    Les string de connexion sont disponible ici
    http://www.connectionstrings.com/

    Tu peux également les avoir en interrogeant la même propriété.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    currentdb.tabledefs("MatableAttachee").connect
    Dans tout les cas le passage obligé c'est cet excellent tuto, véritable bible du DAO.

    Cordialement,

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Merci beaucoup loufab (encore une fois),


    Je vais regarder le tuto...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Bonjour loufab,

    J'ai lu le tuto DAO et j'ai utilisé aussi un post d'un autre forum. En fait je change la propriété Connect des tables de mon application via DAO. Cette propriété est dans la table MSysObjects.

    Comme ça j'arrive à me basculer entre les bases de teste/ production sans avoir besoin de passer par le gestionaire des tables liées...

    Voilà le 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
    Dim strErrMsg As String
    Dim mode As Integer
    mode = InputBox("1. prod >>> dsv" & vbNewLine & "2. dsv >>> prod")
    If mode <> 1 And mode <> 2 Then
        strErrMsg = "Option invalide"
        GoTo QUIT
    End If
     
    Dim oDb As DAO.Database
    Dim oTbl As DAO.TableDef
    Set oDb = CurrentDb
    'Pour chaque table
    For Each oTbl In oDb.TableDefs
     
        If oTbl.Attributes And dbAttachedODBC Then
     
     
            Dim db As DAO.Database, td As DAO.TableDef
            Dim strTable As String
            Dim errX As DAO.Error
     
            strTable = oTbl.Name
     
            Set db = CurrentDb
            On Error Resume Next
            Set td = db.TableDefs(strTable)
            On Error GoTo 0
            If td Is Nothing Then
               strErrMsg = "La Table '" & strTable & "' est introuvable"
               GoTo QUIT
            End If
     
            ' Si la table est bien une table liée ODBC
            If td.Attributes And dbAttachedODBC <> 0 Then
     
               Select Case mode
                Case 1
                    td.Connect = Replace(td.Connect, "=Outils_Gestion;", "=Outils_Gestion_DSV;")
                Case 2
                    td.Connect = Replace(td.Connect, "=Outils_Gestion_DSV;", "=Outils_Gestion;")
               End Select
               MsgBox strTable & " a été actualisée"
     
               On Error GoTo ERRH
               td.RefreshLink
            Else
               strErrMsg = "La Table '" & strTable & "' n'est pas une table liée ODBC"
            End If
     
        End If
     
    Next oTbl
    Merci encore une fois

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

Discussions similaires

  1. Verrouiller une ligne dans une table avec sql server
    Par benabdessamed dans le forum Développement
    Réponses: 30
    Dernier message: 03/10/2012, 12h49
  2. Problème création des tables en SQL-Server
    Par pizzaman dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/02/2012, 22h58
  3. Réponses: 3
    Dernier message: 30/06/2009, 19h16
  4. [Access 2007] update sur des tables / vues SQL server
    Par Flamby38 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 28/09/2007, 13h56
  5. Synchronisation des Données avec SQL Server 2005
    Par attouchi dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/07/2006, 16h14

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