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

Access Discussion :

lier table SQL [AC-2003]


Sujet :

Access

  1. #1
    Membre régulier Avatar de libremax
    Profil pro
    Chargé de projets
    Inscrit en
    Mars 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de projets

    Informations forums :
    Inscription : Mars 2007
    Messages : 168
    Points : 91
    Points
    91
    Par défaut lier table SQL
    Bonjour,
    j'ai un petit prg (sous access 2003) qui tourne sur un poste ou il y a sql serveur express2005
    J'ai liées les tables en ODBC. le fichier s'appelle "Sql_Access_Test1"
    sur ce poste tout est ok mais si je prend le prg et que je le met sur un autre poste, ça plante.
    Normale me direz-vous car je dois relier a nouveau mes tables.
    Mais là est le problème car je n'y arrive pas.
    Quelqu'un pourrez m'expliquer ?
    voici le detail du fichier ODBC
    [ODBC]
    DRIVER=SQL Server
    UID=Service_Client
    Network=DBMSSOCN
    DATABASE=SQL_access
    WSID=SERVEUR
    APP=Microsoft Office 2003
    SERVER=SERVEUR\SQLEXPRESS

    Dans SQL j'ai mis un compte Service_Client avec les autorisations sur mes tables.

    Merci pour l'aide que vous pourriez m'apporter
    Débutant un jour, débutant toujours car chaques jours qui passent nous en apprend un peu plus.

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonjour,

    ...Mais là est le problème car je n'y arrive pas....

    Il serait bon de préciser ... quel comportement tu obtiens. quels messages....
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  3. #3
    Membre régulier Avatar de libremax
    Profil pro
    Chargé de projets
    Inscrit en
    Mars 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de projets

    Informations forums :
    Inscription : Mars 2007
    Messages : 168
    Points : 91
    Points
    91
    Par défaut re
    D'abord merci de vous intéresser à mon petit problème.
    jusqu'a present j'ai déja relier des tables en vba mais de access(frontale) à access(dorsale).
    dans mon cas la base frontale est access et la dorsale est SQL
    sur le poste ou j'ai fait l'application pas de problème.
    maintenant si je déplace mon fichier frontale il y a un pb de connection.
    type impossible de se connecteur au compte serveur\invité.
    je pense que je dois relier a nouveau mes tables.
    Si je le fait en manuelle par tables->liee tout est ok
    mais des que je ferme, je dois tout refaire alors je voudrais le faire en vba en automatique.
    Comment faire ?

    avez-vous une idée ?

    merci d'avance.
    Débutant un jour, débutant toujours car chaques jours qui passent nous en apprend un peu plus.

  4. #4
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    il "suffit" de redéfinir la propriété Connect de tes tables liées.

    Maintenant, pour identifier les tables à reconnecter, une solution consiste tout simplement à créer une table locale dans laquelle tu listes toutes les tables à attacher.

    Tu peux d'ailleurs aussi attacher des vues de la même façon (mais il faut dans ce cas gérer aussi les informations d'index associées pour rendre les données de la vue modifiables).



    Il te faut alors faire un recordset sur ta table locale, parcourir ce recordset et pour chaque table, modifier la propriété COnnect de l'objet Tabledef.
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  5. #5
    Membre régulier Avatar de libremax
    Profil pro
    Chargé de projets
    Inscrit en
    Mars 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de projets

    Informations forums :
    Inscription : Mars 2007
    Messages : 168
    Points : 91
    Points
    91
    Par défaut re
    Re,
    c'est là ou le bas blesse car je sais retablir les liens des tables liées de access à acces .
    mais pas de access a sql.
    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
     
    Function RetablirLiaisons(ByVal strNouveauChemin As String) As Boolean
        Dim db As DAO.Database
        Dim tdf As DAO.TableDef
     
    ' Vérifier que la base dorsale existe
        If Dir(strNouveauChemin) = "" Then
            MsgBox "La base '" & strNouveauChemin & "' n'existe pas.", vbExclamation, "Assistant Liaisons"
            RetablirLiaisons = False
            Exit Function
        End If
     
        Set db = CurrentDb()
     
        For Each tdf In db.TableDefs
            If (tdf.Attributes And dbSystemObject) = 0 Then
                If tdf.Connect <> "" Then
                    tdf.Connect = ";DATABASE=" & strNouveauChemin
                    tdf.RefreshLink
                End If
            End If
        Next
        Set db = Nothing
        Set tdf = Nothing
        RetablirLiaisons = True
    End Function
    j'ai essayé plein de truc avec la fonction connect mais cela ne marche que sur le poste ou est installer sql.
    Sur les autres postes il y a une erreur type .....impossible de se connecter sur serveur\invité
    mais j'ai pourtant bien creer un compte utilisateur sous sql.
    auriez-vous un exemple de retablissement de liaison ?

    cordialement
    Débutant un jour, débutant toujours car chaques jours qui passent nous en apprend un peu plus.

  6. #6
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Le code que tu proposes n'est valable que pour une connexion à un fichier de données Access.

    En l'adaptant à SQL, cela pourrait donner qq chose du genre:

    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
     
    Function RetablirLiaisons(ByVal sCon As String) As Boolean
        Dim db As DAO.Database
        Dim tdf As DAO.TableDef
     
        Set db = CurrentDb()
     
        For Each tdf In db.TableDefs
            If (tdf.Attributes And dbSystemObject) = 0 Then
                If tdf.Connect <> "" Then
                    tdf.Connect = "ODBC;" & sCon & ";TABLE=dbo." & t(i)
                    tdf.RefreshLink
                End If
            End If
        Next
        Set db = Nothing
        Set tdf = Nothing
        RetablirLiaisons = True
    End Function
    où sCon doit recevoir la chaine de connexion au serveur. Si tu utilises un DSN et une authentification Windows, il suffira de lui attribuer "DSN = ...."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RetablirLiaisons("DSN = NomDuDSN")
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  7. #7
    Membre régulier Avatar de libremax
    Profil pro
    Chargé de projets
    Inscrit en
    Mars 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de projets

    Informations forums :
    Inscription : Mars 2007
    Messages : 168
    Points : 91
    Points
    91
    Par défaut Re
    Bonjour,

    Nickel ça fonctionne
    Débutant un jour, débutant toujours car chaques jours qui passent nous en apprend un peu plus.

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

Discussions similaires

  1. [AC-2007] Lier tables SQL en boucle
    Par Faridpo dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/03/2012, 21h00
  2. lier table sql server express
    Par nicorem dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/10/2008, 20h55
  3. copier ou lier une TABLE SQL
    Par KeMp [S2O] dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 19/02/2008, 16h23
  4. Lier une table sql server dans access
    Par PICANTO dans le forum Access
    Réponses: 1
    Dernier message: 11/04/2007, 11h42
  5. lier une table Sql Server sur Access
    Par JerBi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/01/2006, 16h27

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