Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/10/2011, 12h13   #1
Membre chevronné
 
Inscription : septembre 2008
Messages : 798
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 798
Points : 675
Points : 675
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
Marc_27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 18h29   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
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 :
currentdb.tabledefs("MatableAttachee").connect
Dans tout les cas le passage obligé c'est cet excellent tuto, véritable bible du DAO.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 09h33   #3
Membre chevronné
 
Inscription : septembre 2008
Messages : 798
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 798
Points : 675
Points : 675
Merci beaucoup loufab (encore une fois),


Je vais regarder le tuto...
Marc_27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 14h33   #4
Membre chevronné
 
Inscription : septembre 2008
Messages : 798
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 798
Points : 675
Points : 675
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 :
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
Marc_27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h09.


 
 
 
 
Partenaires

Hébergement Web