Forums Développement Multimédia

Aller au contenu

Compilation Access lourd

Director

5 réponses à ce sujet

#1 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 02 May 2011 - 17:41 PM

Bonjour!

Le titre parle par lui-même. Je fais la compilation de donné de plusieurs enregistrements d'une BD access. Le problème est que c'est plutôt lourd et ça nécessite un certain temps de chargement. Voici le code :



    repeat while MonRecordset.eof <> 1
      stats_nb24 = stats_nb24 + MonRecordset.Fields["NB_24"].value
      stats_nb18 = stats_nb18 + MonRecordset.Fields["NB_18"].value
      stats_nb15 = stats_nb15 + MonRecordset.Fields["NB_15"].value
      stats_nb12 = stats_nb12 + MonRecordset.Fields["NB_12"].value
      stats_nb6 = stats_nb6 + MonRecordset.Fields["NB_6"].value
      stats_nb10 = stats_nb10 + MonRecordset.Fields["NB_10"].value
      stats_nb30c = stats_nb30c + MonRecordset.Fields["NB_30c"].value
      stats_nb20c = stats_nb20c + MonRecordset.Fields["NB_20c"].value
      stats_nb10c = stats_nb10c + MonRecordset.Fields["NB_10c"].value
      stats_nb5c = stats_nb5c + MonRecordset.Fields["NB_5c"].value
      stats_tempo3 = MonRecordset.Fields["MONTANT_TRANSAC"].value
      stats_tempo4 = stats_tempo4 + stats_tempo3
      if MonRecordset.Fields["MONTANT_TRANSAC"].value > stats_tempo1 then
        stats_tempo1 = MonRecordset.Fields["MONTANT_TRANSAC"].value
        stats_tempo2 = MonRecordset.Fields["NUM_EMPLOYE"].value
      end if
      MonRecordset.MoveNext()
    end repeat

    The floatPrecision = 2
    member("txt_stats_trans_pcherc").Text = stats_tempo1&" $"
    member("txt_stats_trans_montant_tot_choisir").Text = stats_tempo4&" $"
    member("txt_trans_tot_consigne_nb24").Text = String(stats_nb24)
    member("txt_trans_tot_consigne_nb18").Text = String(stats_nb18)
    member("txt_trans_tot_consigne_nb15").Text = String(stats_nb15)
    member("txt_trans_tot_consigne_nb12").Text = String(stats_nb12)
    member("txt_trans_tot_consigne_nb6").Text = String(stats_nb6)
    member("txt_trans_tot_consigne_nb10").Text = String(stats_nb10)
    member("txt_trans_tot_consigne_nb30c").Text = String(stats_nb30c)
    member("txt_trans_tot_consigne_nb20c").Text = String(stats_nb20c)
    member("txt_trans_tot_consigne_nb10c").Text = String(stats_nb10c)
    member("txt_trans_tot_consigne_nb5c").Text = String(stats_nb5c)
    member("txt_stats_consigne_c_2").Text = String(stats_nb24)
    member("txt_stats_consigne_c_3").Text = String(stats_nb18)
    member("txt_stats_consigne_c_4").Text = String(stats_nb15)
    member("txt_stats_consigne_c_5").Text = String(stats_nb12)
    member("txt_stats_consigne_c_6").Text = String(stats_nb6)
    member("txt_stats_consigne_c_1").Text = String(stats_nb10)
    member("txt_stats_consigne_c_7").Text = String(stats_nb30c)
    member("txt_stats_consigne_c_8").Text = String(stats_nb20c)
    member("txt_stats_consigne_c_9").Text = String(stats_nb10c)
    member("txt_stats_consigne_c_10").Text = String(stats_nb5c)

 

Donc je compile tous les données une par une et les affiches dans des champs textes. J'utilise l'Xtra VbScriptXtra pour aller chercher les données dans un .mdb Access.

Le but premier de la compilation est d'additionner tous les champs. J'ai déjà entendu qu'il existait une opération SQL qui permettait cela mais je ne crois qu'elle fonctionne avec cette Xtra. SUM()

Questions :

1. Est ce que j'utilise la bonne méthode pour compiler des données? Car passé les 500 enregistrements dans une BD, sur un ordinateur pas trop puissant, ça commence a prendre du temps (4-5 sec). L'appli doit pouvoir supporter au moins 5000 records dans un temps raisonnable. (moins de 4-5sec)

2. Quelqu'un a déjà réussie a faire fonctionner SUM() avec cet Xtra? (VbScriptXtra)

__________________

Je comprends pourquoi c'est lent... boucler sur 500 records sur plusieurs champs. J'ai l'impression qu'il manque quelque chose.


Merci beaucoup!

#2 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 03 May 2011 - 14:19 PM

Je ne sais pas si c'est faisable avec cet xtra, mais il vaudrait mieux passer par des requêtes pré-écrites dans la base de données. Tu peux alors faire des requêtes SUM directement, il te suffit ensuite d'un seul appel pour récupérer cette somme.

#3 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 03 May 2011 - 17:01 PM

Voir le messagebubarnet, le 03 May 2011 - 14:19 PM, dit :

Je ne sais pas si c'est faisable avec cet xtra, mais il vaudrait mieux passer par des requêtes pré-écrites dans la base de données. Tu peux alors faire des requêtes SUM directement, il te suffit ensuite d'un seul appel pour récupérer cette somme.

Bonjour,

Connais tu un Xtra ou une manière qui me permet d'appeler une fonction Access pré-écrite? Merci

#4 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 03 May 2011 - 18:20 PM

Malheureusement non, car j'utilise un activeX maison (je n'ai pas trouvé d'xtras qui tiennent la charge pour ce que je voulais faire), mais ce n'est pas une très bonne solution (problème de clavier notamment).

Mais vu ce que peut faire VbScriptXtra, je pense qu'il a tout ce qu'il faut pour. Il faudrait voir comment écrire ça en VB pour pouvoir le retranscire dans l'xtra.

#5 gegedade

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 144 messages

Posté 03 May 2011 - 19:03 PM

Ah que salut !

Complètement à tout hasard, tu devrais mettre des "put" pour voir ce qui prend du temps. J'utilise pas mal l'Xtra d'Eugene Shoustrov moi aussi, pas pour Access mais pour Excel, Power Point et Windows Media Encoder : j'ai pu constater d'abord que cet Xtra est une pure merveille, ensuite que, lorsque je l'utilise avec Power Point 2003, le fichier met quatre ou cinq fois plus longtemps à se charger qu'avec PowerPoint 2007 (et maintenant 2010).

En ce qui concerne les requêtes isncrites dans Access, Eugene Shoustrov dit souvent que les choses ne dépendent pas de son Xtra mais du logiciel lui-même. Tu devrais regarder du côté du site msdn.microsoft.com, etc. puis library et Access. J'ai trouvé des codes sensationnels qui me permettent de manipuler PowerPoint et les autres softs d'Office comme si j'étais dedans.

Voyant la rapidité des récupérations de valeurs dans Excel (à travers, en plus, MultiUser Server !), je me dis que la récup de 500 valeurs dans Access ne doit pas être si longue que ça.

Amitiés directoresques !

#6 kriska

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 85 messages

Posté 04 May 2011 - 14:23 PM

Bonjour,
Tu devrais peut-être exécuter une requète sql du genre :
SELECT SUM("NB_24"), SUM("NB_18") FROM "MaTable"



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP