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 les tables au démarrage


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Points : 61
    Points
    61
    Par défaut Lier les tables au démarrage
    Hello
    Je souhaiterais que ma base de données lie des tables au démarrage, il faut savoir que pour chaque démarrage la base de donnée source peut être différente.

    J'ai consulté les FAQ et j'ai trouvé que pour importer des tables (ce qui est interressant aussi).

    Pouvez vous m'aider.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    ci dessous un exemple de code d'ajout de table liée :

    Citation Envoyé par Code
    Option Explicit


    Function AddTable(ByVal srcTable As String, ByVal linkTable As String)
        Dim tblTable As DAO.TableDef
        Set tblTable = CurrentDb.CreateTableDef(linkTable)

        tblTable.Attributes = dbAttachSavePWD
        tblTable.SourceTableName = srcTable
        tblTable.Connect = "ODBC;DSN=Oracle FINPROD;UID=******;PWD=*****;SERVER=PANORAMIX;DATABASE="
        CurrentDb.TableDefs.Append tblTable
        
        Set tblTable = Nothing
    End Function

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut
    Ici du code si tu veux juste rafraichir des liens existants. Le secret est dans la propriété 'Connect' du tableDef. Celui-ci relinke avec une base Access sans mot de passe.

    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
     
    Public Sub RelinkerTable(prmNomCompletBaseLiee As String)
        Dim t As TableDef
        Dim db As Database: Set db = CodeDb
        Dim numFichierIni As Integer
     
        For Each t In db.TableDefs
            If t.Connect <> "" Then
                t.Connect = ";DATABASE=" & prmNomCompletBaseLiee
                t.RefreshLink
            End If
        Next t
        db.Close: Set db = Nothing
     
    End Sub

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    Cafeine, je suis vraiment nul car je n'y arrive pas.
    Je présise exactement ce que je veut faire :
    • - Je travaille en access 2003, donc type =odbc ok?
      - Ma table s'appelle T_Feux, elle se trouve dans une base dont le chemin est V:\VT\VT_TARISSA.mdb
      - J'accède à ce disque sans login.


    Merci de bien vouloir encore répondre

  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Vu ton cas, tu devrais plutôt faire une table attachée manuellement puis utiliser le code de marot_r pour rafraichir le lien à chaque ouverture ...

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut
    Le code fourmit par Caféine permet de se connecter à une base Oracle d'où la liason ODBC. Pour une base Access ce n'est pas nécessaire et cela ressemble plus à mon code.

    De plus le code de Cafeine créer la table dans ta base Appli.

    Le plus simple est que tu fasse un link à la main sur ta base puis tu lance dans un module le pg suivant dans ta base Appli.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private sub AfficherLink
      dim t as tabledef
      for each t in currentdb.tabledefs
        if t.connect<>"" then
          debug.print t.name, t.connect
       end if
      next t
    end sub
    Ca va t'afficher toute les chaines de link pour toutes tes tables liées. Tu n'a plus qu'à regarder comme ta chaine est structurée et changer l'élément qui doit être modifier soit par un refresh (voir mon code) soit par une création (voir le code Cafeine).

    A+

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    ok je vois çà demain , et je vous tiens au courant.
    Sur ce bonne nuit 8) et merci

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    je n'arrive pas à définir la deuxième variable de la fonction RelinkerTable ()

    Voici les codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub AfficherLink()
      Dim t As TableDef
      Dim Liaison As String
      For Each t In CurrentDb.TableDefs
        If t.Connect <> "" Then
          Debug.Print t.Name, t.Connect
     
            Liaison = t.Name & t.Connect
       [color=red]RelinkerTable (Liaison ,t)[/color]
       End If
      Next t
    End Sub
    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
     
     
    Public Sub RelinkerTable(prmNomCompletBaseLiee As String, NomTable As TableDef)
     
        Dim db As Database: Set db = CodeDb
        Dim numFichierIni As Integer
                 NomTable.Connect = prmNomCompletBaseLiee
     
            If NomTable.Connect <> "" Then
     
                NomTable.RefreshLink
            End If
     
        db.Close: Set db = Nothing
     
    End Sub

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Points : 61
    Points
    61
    Par défaut çà fonctionne!
    J'avais mal adapté le code précédent.
    Maintenant çà répond à mes besoins, merci.

    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
    Public Sub RelinkerTable()
        Dim t As TableDef
        Dim db As Database: Set db = CodeDb
        Dim Agent As String
     
        Agent = "Nom_Qui_Varie_En_Fonction_De_L'agent_Concerné"
        For Each t In db.TableDefs
     
            If t.Connect <> "" Then
                t.Connect = ";DATABASE=V:\VT\VT_" & Agent & ".mdb"
                t.RefreshLink
            End If
        Next t
        db.Close: Set db = Nothing
     
    End Sub
    A bientôt.

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

Discussions similaires

  1. Lier les tables sur Internet
    Par BMABMA dans le forum Access
    Réponses: 2
    Dernier message: 16/08/2006, 19h07
  2. Réponses: 15
    Dernier message: 22/06/2006, 16h17
  3. 'lier les tables' relation excel/access
    Par rahan_dave dans le forum Access
    Réponses: 7
    Dernier message: 08/11/2005, 17h08
  4. Lier les tables
    Par Gebudi dans le forum Access
    Réponses: 11
    Dernier message: 31/08/2005, 12h57
  5. lier les tables acces oracle
    Par xtaze dans le forum Access
    Réponses: 5
    Dernier message: 12/06/2005, 21h39

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