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 :

Comment changer dynamiquement les tables liées


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment changer dynamiquement les tables liées
    bonjour
    J ai une base de données comprenant plusieurs tables dont certaines sont liées cette base est sur une clés usb le probléme c est que je change souvent de poste et suis donc obligé de relié les base a chaque fois n y a t il pas un moyen dynamique

    cordialement

  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 006
    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 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Au lancement de l'application exécuter du code pour refaire les attaches ou réécrire la propriété Connect de l'objet TableDef.

    Normalement il y a des exemples de codes dans la faq et même dans le forum.

    Une petite recherche est necessaire.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut
    Salut,

    voilà le code que j'utilise pour charger des tables dans mon appli.
    Je fais d'abord une recherche des tables que j'ai à lier, ce sont toutes celles qui s'appellent "*ListePlans.mdb", je les supprime et je lie les nouvelles.

    Le code est a adapter en fonction de ce que tu veux faire.

    lblProg est une étiquette sur mon formulaire ("formLogin") qui sert de barre de progression

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    Sub lierToutes()
    On Error GoTo gest_err_lier
     
    Dim db As DAO.Database
    Dim qdfTmp As DAO.QueryDef
    Dim oTbl As DAO.TableDef
    Dim rst As Recordset
    Dim sql As String
    Dim strNomTables() As String
    Dim strCheminBd As String
    Dim strConnect As String
    Dim intI As Integer
    Dim intNbTable As Integer
     
    'Affiche l'indicateur de progression
    lblProg.Visible = True
     
    'Requete listant les tables "*Liste_plans.mdb" liées (Type=6)
    sql = "SELECT MSysObjects.Name, MSysObjects.ForeignName, MSysObjects.Database "
    sql = sql & "FROM MSysObjects "
    sql = sql & "WHERE ((MSysObjects.Database Like '*Liste_plans.mdb') AND (MSysObjects.Type=6));"
     
    'Définit le chemin de la BdD a connecter:
    strCheminBd = "C:\toto.mdb"
    'Définit la chaine de connexion permettant la liaison des tables
    strConnect = "MS Access;DATABASE=" & strCheminBd
     
    'Définie la base courante dans "db":
    Set db = CurrentDb
    'Définie la requete temporaire dans "qdftemp":
    Set qdfTmp = db.CreateQueryDef("", sql) 'La chaine vide indique que c'est une requete temporaire !
     
    With qdfTmp
        'Ouvre le recordset de la requete TablesLiées
        Set rst = .OpenRecordset(dbOpenDynaset)
     
        'Compte le nombre de table dans la requête pour dimentionner le tableau strNomTables
        rst.MoveLast
        intNbTable = rst.RecordCount
        ReDim strNomTables(intNbTable)
     
        'Remplit le tableau strNomTables
        intI = 0
        rst.MoveFirst
        While Not rst.EOF
            strNomTables(intI) = rst.Fields(1)
            'Passe au recordset suivant
            intI = intI + 1
            rst.MoveNext
        Wend
     
        'Fermeture du recordset
        rst.Close
     
        'Fermeture de la requete
        .Close
    End With
     
    '"Effacement" de la requete
    Set qdfTmp = Nothing
    Set rst = Nothing
     
    'Remet à jour les tables : Suppression -> Création -> Liaison
    For intI = 0 To intNbTable - 1
        'Efface la table liée
        DoCmd.DeleteObject acTable, strNomTables(intI)
        'Crée une nouvelle table dans la base de données courante
        Set oTbl = db.CreateTableDef(strNomTables(intI))
        'Lie les deux tables
        oTbl.Connect = strConnect
        oTbl.SourceTableName = strNomTables(intI)
        'Ajoute la table à la base de données
        db.TableDefs.Append oTbl
        'Debug.Print intI & ") Table " & strNomTables(intI) & "    mise à jour"
        'Affichage de la progression sur le formulaire
        lblProg.Caption = lblProg.Caption & "o"
        Forms("formLogin").Repaint
    Next intI
     
     
    'Fermeture de la base
    db.Close
    Set db = Nothing
     
    Exit_lierToutes:
        Exit Sub
     
    gest_err_lier:
        MsgBox Err.Description
        Exit Sub
    End Sub
    Bon courage,

    JM

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/05/2007, 09h22
  2. Réponses: 2
    Dernier message: 15/03/2006, 10h49
  3. Réponses: 8
    Dernier message: 05/04/2005, 22h17
  4. Comment changer dynamiquement la valeur d'une option de DbGrid ?
    Par Atrebate62 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2005, 13h35
  5. [C#] Comment changer tous les btn d un coup
    Par Le Basque dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/01/2005, 18h21

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