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

VBA Access Discussion :

Autom. la créat. de tables attachées d'un ensemble de bases [À faire]


Sujet :

VBA Access

  1. #1
    YT
    YT est déconnecté
    En attente de confirmation mail
    Inscrit en
    Août 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Autom. la créat. de tables attachées d'un ensemble de bases
    Salut à tous,
    Je cherche une solution pour automatiser la création de tables attachées vers une autre base access dans mes x bases access source, sans bien sur, devoir le faire manuellement via l'interface sur chaque base.

    Dans un premier temps, je me suis tourné vers la solution de piloter ces créations via un bout de code delphi en utilisant une méthode du DBEngine (comme il en existe une par exemple pour le compactage CompactDatabase). Dans ce sens, j'ai posé ma question sur le forum Delphi et Bases de données, sans réponse pour le moment.

    Je me suis donc tourné dans un deuxième temps vers l'utilisation direct d'access (options de ligne de commande, intégration automatique d'une macro...), bref, y-a-t-il un moyen de créer des objets dans access sans passer par l'interface ? Quelles solutions envisageriez vous pour résoudre ce pb ?

    D'avance merci. A+

  2. #2
    J-D
    J-D est déconnecté
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Y a pas de problème.
    Tu peux gérer ca en VB.

    Actuellement je travaille aussi avec des base distantes.
    J'ai créer manuellement les tables liées au début (mais bon ca ce fait en VB)
    Ensuite lorsque je demarre l'application, si l'une des bases à été changée de place alors je demande à l'administrateur de saisir le nouveau chemin de la base. Ensuite l'a mise à jour de tous les lients est automatique (en VB.)

    C'est un truc du style:

    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
     
    Dim db, dbSSM As Database
    Dim tSourceDB As TableDef
    Dim sFirstLetter, sLinkedTable As String
     
    Set db = DBEngine.Workspaces(0).OpenDatabase(sDbPath)
    Set dbSSM = CurrentDb
     
    For Each tSourceDB In db.TableDefs
        sFirstLetter = Left(tSourceDB.Name, 1)
        'All tables are linked, except the system table "MSys..."
        'The created tables are called "t..." or "_...."
        If sFirstLetter = "t" Or sFirstLetter = "_" Then
            sLinkedTable = getLinksInMSysObjects(tSourceDB.Name, sDbPath)
            If sLinkedTable = "0" Then
              'Link creation
              Application.DoCmd.TransferDatabase acLink, "Microsoft Access", sDbPath, acTable, tSourceDB.Name, tSourceDB.Name
            ElseIf sLinkedTable <> "1" Then
              'Link update: the table link exist and it is not linked to the good database
              dbSSM.TableDefs(sLinkedTable).Connect = ";DATABASE=" & sDbPath
              dbSSM.TableDefs(sLinkedTable).RefreshLink
            End If
        End If
    Next tSourceDB
     
    db.Close

  3. #3
    YT
    YT est déconnecté
    En attente de confirmation mail
    Inscrit en
    Août 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Ok, merci.
    Tes indics m'ont permis d'orienter mes recherches et de transposer ton code VB en delphi, ce qui donne, en version épurée :
    Encore 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
    17
    18
    19
    20
    21
    22
     
    procedure X
     
    var
      access, db, td : Variant;
    begin
     
          access := CreateOleObject('DAO.DBEngine.36'); // ou DAO.DBEngine.35 selon
     
          db := access.OpenDatabase('BaseSource.mdb');
     
     
        td := db.CreateTableDef(NomLien,0,NomTableLieeDest,';DATABASE='+'BaseDest.mdb');
     
        db.TableDefs.Append(td);
     
         db.Close;
     
     
         access := UnAssigned;
     
    end;

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/09/2005, 22h06
  2. ACCESS modif lien tables attachées
    Par Berched dans le forum Access
    Réponses: 4
    Dernier message: 23/06/2005, 12h08
  3. Chemin des tables attachées en VBA
    Par stigma dans le forum Access
    Réponses: 3
    Dernier message: 17/06/2005, 09h42
  4. Réponses: 12
    Dernier message: 12/12/2004, 14h25
  5. Tables attachées
    Par gaybarre dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/08/2004, 17h57

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