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 :

Compacter base de données liées ...


Sujet :

Access

  1. #1
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut Compacter base de données liées ...
    Bonjour,

    Je travaille sur Access 2003.

    J'ai créer une base de données que j'ai séparé en 6 fichiers différents (6 bases Access) ...

    Il y a 5 fichiers qui contiennent les tables et 1 fichier qui est un fichier local et présent sur chaque poste de mon réseau qui contient mes requêtes, états, formulaires, modules, etc ... ...

    Mes tables sont toutes liées dans mon fichier local ...

    Ce que j'aimerais savoir c'est :

    1) Est-ce que lorsque je compacte ma base de données en locale cela compacte toutes les autres bases dont les tables sont liées à la base locale ???

    2) Si ce n'est pas le cas, existe il un code VBA ou alors autre chose pour que tout se compacte en même temps ???

    Merci de vos réponses ... ...

    A bientôt ...

  2. #2
    Membre averti Avatar de mcdotta
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 292
    Points : 324
    Points
    324
    Par défaut
    Salut Mister Snoopy,

    Non, lorsque tu compactes ta base, tu ne compactes que le fichier mdb front-end.

    Je te suggère d'avoir une table locale (dans ton front-end) tblLinkedFiles qui contient 5 enregistrements correspondant aux 5 chemins de tes fichiers data.

    Ensuite, via ton interface, lorsqu'une aucun form ou requête ou état lié à une table d'un des 5 fichiers externes n'est ouvert, tu peux créer une procédure qui parcourt les enregistrements de ta table tblLinkedFiles et procède à un compactage.

    Le code de base pour le compactage est :

    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
     
    Dim recSet As New ADODB.Recordset
    Dim strPathFrom as String
    recSet.Open "tblLinkedFiles" ,CurrentProject.Connection, adOpenKeyset, adLockReadOnly
    If recSet.EOF = False and recSet.BOF = False then
        Do While Not recSet.EOF
             strPathFrom = recSet![fldPath]
             DBEngine.CompactDatabase strPathFrom, "C:\tmp1.mdb"
             Kill strPathFrom
             FileCopy "C:\tmp1.mdb", strPathFrom
             Kill "C:\tmp1.mdb"
             recSet.MoveNext
        Loop
    Endif
    recSet.Close
    Voilà. Bonne journée

  3. #3
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Bien le bonjour ...

    Merci pour ta réponse détaillée ...

    J'ai néanmoins des questions car je n'ai pas très bien compris certain de tes termes :

    Question 1 :

    Tu me dis :

    Je te suggère d'avoir une table locale (dans ton front-end)
    Le fichier front-end c'est le fichier que tous les ordinateurs ont en local ???

    Question 2 :

    Ensuite, via ton interface, lorsqu'une aucun form ou requête ou état lié à une table d'un des 5 fichiers externes n'est ouvert, tu peux créer une procédure qui parcourt les enregistrements de ta table tblLinkedFiles et procède à un compactage.
    La table que tu nommes : tblLinkedFiles c'est la table que j'ai créer en local sur chaque poste dans ce que tu appelles le front-end ???

    Question 3 :

    Est-ce que cela serait bien d'effectuer un compactage des base de données lorsque j'ouvre ma base locale ???

    En fait il y aura toujours au minimum 5 utilisateurs connectés sur ma base de données ... et chaque ordinateur est éteint le soir à partir de 19h00 et chaque ordinateur est rallumé le lendemain matin à 05h30 ... donc je me dis que si il y a 10 ordinateurs qui ouvrent en même temps la base, elle va faire 10 compactages simultanément ce qui va prendre beaucoup de temps à l'ouverture non ???

    Que me conseillerais-tu ???


    Merci pour ton aide ... et le code pour le compactage ... je vais voir tout cela .... et je vais essayer ... ...

    Merci à toi ...

  4. #4
    Membre averti Avatar de mcdotta
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 292
    Points : 324
    Points
    324
    Par défaut
    Re,

    Question 1 :
    OUI Le fichier front-end c'est le fichier que tous les ordinateurs ont en local

    Question 2:
    OUI La table que tu nommes : tblLinkedFiles c'est la table que j'ai créé en local sur chaque poste dans ce que tu appelles le front-end

    Question 3:
    Il faut qu'aucun utilisateur soit connecté sinon tu ne peux pas être sûr qu'aucune table des fichiers liés soit ouverte ce qui provoquerait une erreur. Tu dois soit :
    - instaurer en collaboration avec un utiliseur que tu appeleras "super-user" une politique de compactage qui doit être lancée manuellement
    - soit avoir une table qui contient les dates de compatages, vérifier que la date du jour n'est pas dedans, compacter et ajouter une nouvel enregistrement avec la date du jour de façon à ce que le compactage ne s'effectue qu'une fois, au premier chargement matinal de la base. Il faut en tous cas que le premier arrivé ait quelques minutes avant que les autres arrivent et ouvrent l'appli (ca dépend de la taille des fichiers de données et donc du temps de compactage des 5 fichiers).
    Autre chose : ca suppose que le backup a été fait la nuit et donc avant le compactage car si un problème de corruption survient, tu dois repartir des backup avant compactage.

    Voilà, j'espère que mes explications sont claires

  5. #5
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Merci mcdotta ...

    Tes réponses sont très claires ... ...

    Je vais essayer tout cela et je te redonnerai des nouvelles ... d'ici là, merci encore et bonne journée ...

Discussions similaires

  1. .exe ne fonctionne pas avec base de donnée liée
    Par EclairOChocola dans le forum ADO.NET
    Réponses: 1
    Dernier message: 19/03/2014, 21h47
  2. Réponses: 0
    Dernier message: 25/02/2013, 11h19
  3. Compacter base de donnée ACCESS
    Par Bernardo31 dans le forum JDBC
    Réponses: 5
    Dernier message: 30/04/2009, 11h28
  4. Comment faire une moyenne avec une base de données liée ?
    Par BXDSPORT dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/11/2007, 20h43
  5. base de données liée aux saison
    Par judor31 dans le forum Schéma
    Réponses: 2
    Dernier message: 10/04/2007, 10h50

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