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 :

Taille de fichier Access


Sujet :

Access

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Taille de fichier Access
    Bonjour à tous,
    d'abord je tiens à préciser que je suis un débutant sur access et vba.
    Je cherche actuellement un moyen de diminuer la taille de mon application créer sous access qui consiste à l'affichage de tas de graph. Je m'explique, j'ai créer plein de formulaire qui contiennent pas mal de graphiques pour la plupart. Mais je me retrouve avec une application qui fait plus de 200 MO.
    Or les tables sont stockées dans une base oracle, je ne fais que les lier et afficher les données en quelque sorte selon mes besoins.
    J'utilise pour générer des graph du code sql de ce type :
    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
    Private Sub Commande1_Click() 'c'est un bouton actualiser
     
    'Déclarations des variables qui vont être utilisées comme chaîne de texte dans ce cas.
    Dim SQLCmd1 As String
     
    'Requêtes selection servant de source pour les graphiques
    SQLCmd1 = "SELECT PROTOS_TAB_POSTES.DAT, PROTOS_TAB_POSTES.CP_SANMO, PROTOS_TAB_POSTES.CP_SURTA"
    SQLCmd1 = SQLCmd1 + " FROM PROTOS_TAB_POSTES"
    SQLCmd1 = SQLCmd1 + " WHERE (PROTOS_TAB_POSTES.DAT between #" & Format$(Me.Date_deb, "yyyy-mm-dd hh:nn:ss") & "# AND #" & Format$(Me.Date_fin, "yyyy-mm-dd hh:nn:ss") & "#) AND ((PROTOS_TAB_POSTES.COD_CUV)=(""" & Me.CUVE & """))"
    SQLCmd1 = SQLCmd1 + " GROUP BY PROTOS_TAB_POSTES.DAT, PROTOS_TAB_POSTES.CP_SANMO, PROTOS_TAB_POSTES.CP_SURTA"
    SQLCmd1 = SQLCmd1 + " ORDER BY PROTOS_TAB_POSTES.DAT"
    Graphique0.RowSource = SQLCmd1 'attribution de cette requete comme source du graph
    'Mise à jour des graphiques
     
    Me.Graphique0.Requery
    Voilà le principe pour l'actualisation de mes graph.
    D'aprés ce que j'ai compris, access définit une taille de formulaire adapté aux requêtes que je fais. Or certains de mes graphiques génèrent plus de 4000 lignes d'enregistrement. L'actualisation en elle même ne prend pas de temps, c'est à l'ouverture et à la fermeture du formulaire que ça devient long.

    Ce que je voudrais c'est déjà trouvé un moyen qu'access ne stocke pas les données que je lui demande d'afficher, ou que je puisse réduire le poids des formulaires à la fermeture en forçant à ne pas anticiper sur l'entrée de données.
    Depuis le début de mon stage que je misère sur ce problème, mais je n'ai toujours pas trouvé une solution qui marche.

    Le compactage ne donne rien je passe de 200 Mo à 170 au minimum.

    Il y'a aussi le fait qu'à l'ouverture il essaie de charger tous les graphes avant que je ne lui demande d'actualiser qui me perturbe.

    J'espère mettre fait comprendre au moins un peu, sinon n'hésitez pas à me relancer.

    merci d'avance pour toute réponse.

  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 600
    Points
    24 600
    Par défaut
    Bonjour,
    Pour le problème de taille de fichier essaye une décompilation avant le compactage. La taille devrais encore diminuée. (décompiliation voir sur ma page le tuto sur les raccourcis).

    En ce qui concerne la rapidité, il n'y a pas trop de solution si ce n'est l'optimisation des requêtes. (voir le tuto sur l'optimisation des bases access, toujours sur ma page).

    Bonne chance.
    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
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Loufab,
    merci pour la rapidité de ta réponse, mais je n'ai pas trouvé un tutoriel dédié à la décompilation dans ta page (http://loufab.developpez.com/optimisation/#LII-C). Donc si tu peux m'indiquer ou trouver ça exactement ce serait sympa.
    J'ai trouvé ce qui concerne l'optimisation des requêtes et l'analyseur de performances, j'ai déjà fait tourner l'analyseur de performances et j'ai suivi les conseils, par contre pour les requêtes je ne vois pas trop comment les améliorer. D'ailleurs j'ai une petite question : est-il mieux de mettre dans le contenu du graphique (propriétés) du SQL directement ou de mettre une requête qu'on charge à partir de VBA du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim SQLCmd As String
    SQLCmd = "SELECT #1/1/2009#+Int(([PROTOS_TAB_SEC_ACCESS].[DAT]-#1/1/2009#)*8640)/8640 AS DAT, Avg(PROTOS_TAB_SEC_ACCESS.RI/1000) AS RI FROM PROTOS_TAB_SEC_ACCESS WHERE (((PROTOS_TAB_SEC_ACCESS.DAT) Between #" & Me.DatMin & "# And #" & Me.DatMin + 540 / 1440 & "#) AND ((PROTOS_TAB_SEC_ACCESS.COD_CUV)=""" & Right(Me.COD_CUV, 1) & """))GROUP BY #1/1/2009#+Int(([PROTOS_TAB_SEC_ACCESS].[DAT]-#1/1/2009#)*8640)/8640 ORDER BY #1/1/2009#+Int(([PROTOS_TAB_SEC_ACCESS].[DAT]-#1/1/2009#)*8640)/8640;"
     
    CurrentDb.QueryDefs("DataChart").SQL = SQLCmd
    Est-ce que ça peut me permettre de diminuer la taille de ma base, parce que dans ce cas, je suis obligé de créer autant de requêtes que de graph...

  4. #4
    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 600
    Points
    24 600
    Par défaut
    c'est ici pour les raccourcis.

    http://loufab.developpez.com/raccourci/

    Le sql a l'avantage de ne rien peser en terme de place fichier, maintenant cela ne change rien dans la rapidité d'exécution.

    Par contre ce qui est couteux c'est les fonctions mathématiques et surtout les CAST que tu fais.

    As-tu essayé de passer par une table intermédiaire locale ?
    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

  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Une connexion directe au Server Oracle plutôt que l'utilisation des tables liées permettrait de gagner du temps car le traitement n'est pas du tout le même.

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  6. #6
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Salut Loufab et Chtulus,
    J'ai déjà mis en place des tables intermédiaires pour mes calculs trés long utilisant plein de fonction (ct un exemple qui n'est pas dans mes formulaires). Là je me concentre exclusivement sur la réduction de la taille de mon appli, et sur la vitesse d'exécution de certaines requêtes.
    Pour les requêtes, je veux bien que Chtulus m'explique un peu plus l'histoire de la connexion directe au Serveur Oracle.

Discussions similaires

  1. Taille fichier Access inchangé (base vidé)
    Par JimJames23 dans le forum Access
    Réponses: 1
    Dernier message: 23/07/2010, 15h43
  2. Taille fichier Access>2G : arrêt de programe
    Par fafabzh6 dans le forum VBA Access
    Réponses: 6
    Dernier message: 17/06/2008, 09h25
  3. Réponses: 2
    Dernier message: 13/08/2007, 19h45
  4. Taille d'un fichier Access
    Par Aspic dans le forum Access
    Réponses: 6
    Dernier message: 02/07/2007, 14h59
  5. Enorme taille de fichier Access
    Par jobijoba dans le forum Access
    Réponses: 11
    Dernier message: 23/09/2006, 11h47

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