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

Contribuez Discussion :

lier des tables par le code [Fait]


Sujet :

Contribuez

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Points : 36
    Points
    36
    Par défaut lier des tables par le code
    bonjour,

    je fais appel à vous pour lier toutes les tables d'un BD access par le code. Ma base access est protégées par un pwd.

    j'ai cherché sur le forum mais je n'ai pas trouvé qq chose de clair.


    du genre une boite de dialogue qui permet de selectionner un fichier .mbd et et de lier ses tables.

    avez vous une idée svp ?

  2. #2
    Membre régulier Avatar de Sonic
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Points : 96
    Points
    96
    Par défaut
    Pour récupérer la base de données, je te laisse regarder la FAQ : http://access.developpez.com/faq/?pa...#AffBoitDialog
    Et pour lier une table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferDatabase acLink, "Microsoft Access", "C:\test.mdb",acTable, "NomTableSource","NomTableDest"

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Points : 36
    Points
    36
    Par défaut
    merci infiniment

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Points : 36
    Points
    36
    Par défaut
    bonjour,

    j'ai encore un petit problème :

    comme je le disais, ma base de données est prtégée par un mot de passe. Comment puis-je faire pour passer le mot de passe en paramètre ?

    sinon pour chaque table il y'a une popup qui me demande de saisir le mot de passe, et si j'ai 30 tables il fo taper 30 fois le mot de passe.

    merci beaucoup de votre aide.

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Quelques exemples en utilisant VBA :

    Lier une table :

    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
     
    Sub lier()
    Dim strMotPasse As String
    Dim strCheminBd As String
    Dim strNomTable As String
    Dim strConnect As String
    Dim oDb As DAO.Database
    Dim oTbl As DAO.TableDef
    'Définit mot passe, nom table, chemin base de données
    strMotPasse = "pass"
    strCheminBd = "c:\test.mdb"
    strNomTable = "Table1"
    'Instancie l'objet Database
    Set oDb = CurrentDb
    'Définit la chaine de connexion permettant la liaison
    strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:\test.mdb"
    'Crée la nouvelle table
    Set oTbl = oDb.CreateTableDef(strNomTable)
    With oTbl
        .Connect = strConnect
        .SourceTableName = strNomTable
    End With
    'Ajoute la table à la base de données
    oDb.TableDefs.Append oTbl: oDb.TableDefs.Refresh
    End Sub
    Lier toutes les tables d'une base de données

    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
     
    Sub lierToutes()
    Dim strMotPasse As String
    Dim strCheminBd As String
    Dim strConnect As String
    Dim strNomsTables() As String
    Dim strTemp As String
    Dim i As Integer
    Dim oDb As DAO.Database
    Dim oDbSource As DAO.Database
    Dim oTbl As DAO.TableDef
    Dim oTblSource As DAO.TableDef
    'Définit mot passe, nom table, chemin base de données
    strMotPasse = "pass"
    strCheminBd = "c:\test.mdb"
    'Définit la chaine de connexion permettant la liaison des tables
    strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:\test.mdb"
    'Instancie l'objet Database de la base courante
    Set oDb = CurrentDb
    'Instancie l'objet Database de la base protégée
    Set oDbSource = DBEngine.OpenDatabase(strCheminBd, True, True, strConnect)
     
    'Parcours l'ensemble des tables de la base de données protégée
    'et stocke leur nom
    For Each oTblSource In oDbSource.TableDefs
        'ignore les tables system
        If (oTblSource.Attributes And dbSystemObject) = 0 Then
            strTemp = strTemp & oTblSource.Name & "|"
        End If
    Next
    'Ferme la base de données sources (impératif pour la liaison)
    oDbSource.Close: Set oDbSource = Nothing
    'parcours le tableau de noms de tables
    strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|")
    For i = 0 To UBound(strNomsTables)
      'Crée une nouvelle table dans la base de données courante
      Set oTbl = oDb.CreateTableDef(strNomsTables(i))
      'Lie les deux tables
      oTbl.Connect = strConnect
      oTbl.SourceTableName = strNomsTables(i)
      'Ajoute la table à la base de données
      oDb.TableDefs.Append oTbl
    Next i
     
    'Rafraichit la liste des tables
    oDb.TableDefs.Refresh
    End Sub
    Pour que cela fonctionne, il ne faut pas oublier d'ajouter la référence Microsoft DAO au projet

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Points : 36
    Points
    36
    Par défaut
    ça marche, merci beaucoup !

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

Discussions similaires

  1. [AC-2003] Lier les tables par code
    Par Gabout dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/10/2013, 18h59
  2. Comment lier des tables Access ?
    Par po.lombard dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/12/2005, 12h54
  3. Réponses: 4
    Dernier message: 20/11/2005, 18h02
  4. liste des tables par base
    Par rupert dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/05/2004, 09h38
  5. Comment obtenir la description des tables par SQL
    Par rcastaldi dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/03/2004, 14h13

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