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

IHM Discussion :

Instantané en mode formulaire unique, quelques siècles en mode feuille de données ?


Sujet :

IHM

  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut Instantané en mode formulaire unique, quelques siècles en mode feuille de données ?
    Bonjour à tous et merci de votre temps et de votre aide.

    J'ai un soucis de performance sur un de mes formulaires.

    Ce formulaire est basé sur une requête qui contient entre autre une fonction VBA assez complexe.

    Si j'exécute la fonction en test VBA, j'obtiens un temps de réponse de l'ordre du 1/10ème de seconde.
    Si j'affiche mon formulaire en mode "formulaire unique" on est dans les mêmes eaux.
    Si je l'affiche en mode feuille de données, on est dans l'ordre des minutes voir pire.

    Si je neutralise le calcul. j'ai des temps d'affichage dans les 2 modes qui sont de l'ordre du 1/10ème de seconde.
    Donc c'est bien ma fonction la coupable.

    Est-ce que quelqu'un aurait une astuce pour contourner ce problème sachant que je dois pouvoir modifier les données qui sont partagées par plusieurs utilisateurs.
    Donc une solution avec une table temporaire serait vraiment pénible.

    A+

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 391
    Points : 19 817
    Points
    19 817
    Billets dans le blog
    66
    Par défaut
    Bonsoir,

    La 1ère idée qui me vient, c'est si possible d'optimiser la fonction ou traduire la fonction en une expression dans un champ calculé.

    Vérifier aussi combien d'appels à cette fonction il y a dans la requête et s'il n'y a pas moyen de simplifier la requête pour limiter le nombre d'appels.

    Mais il faudrait aussi voir plus en détail la fonction VBA.

    Cdlt,

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour User et merci de ces pistes.

    La fonction est un poil complexe mais je peux la résumer ainsi :

    selon le groupe d'activités j'ai :

    • soit c'est 0
    • soit c'est la valeur de l'an dernier multiplié par un pourcentage (variable en fonction des années).
    • soit c'est un pourcentage (variable en fonction des années) du temps total disponible.
    • soit c'est la différence entre le temps total disponible - tous les autres groupes d'activités déjà planifiés.


    Et j'ai une vingtaine de groupes d'activités.

    C'est pour cela que j'ai fait du VBA et comme je l'ai mentionné, en test et seule, la fonction s'exécute en 1/10 de seconde et je pense difficilement pouvoir faire mieux.
    Vu la complexité de la logique, la convertir en fonction internes, même si c'est possible va donner un affreux paquet de fonctions imbriquées qui va devenir difficile à maintenir et a comprendre.

    J'explore la possibilité de faire un champ pour stocker le résultat et une mise à jour seulement lors des modifications mais pour le moment je n'ai pas trouvé de méthode pour signaler le modification et déclencher mon calcul en étant sur de ne pas manquer une modification.

    Je suis tout fois ouvert aux autres idées.

    A+

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 391
    Points : 19 817
    Points
    19 817
    Billets dans le blog
    66
    Par défaut
    Bonjour,

    Oui ce champ permettant de stocker le résultat de la fonction pourrait-être mis à jour par exemple sur l'événement avant maj (ou before update) du formulaire.

    Cdlt,

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    J'en ai discuter avec mon client et je vais faire une version gérer comme cela. Je pense que j'aurai le gain de performance dont j'ai besoin ... 20s pour glisser d'une colonne vers droite c'est pas top :-(.
    Mais si quelqu'un a une solution miracle je suis preneur.

    Avoir un champ calculé mis à jour par VBA comporte certains risques de désynchronisation et pour des raisons de simplicité j'ai exclu les macros de données de ma solution.

    A+

Discussions similaires

  1. [AC-2007] Code différent selon formulaire unique ou formulaire mode feuille de données
    Par AgriPhilou dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/07/2010, 18h38
  2. [AC-2003] Synchroniser 5 formulaires avec un clic dans une feuille de données
    Par heavysilence dans le forum IHM
    Réponses: 3
    Dernier message: 31/03/2010, 14h08
  3. Imprimer un formulaire uniquement
    Par Kaoziun dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/09/2006, 14h00
  4. VBA affichage par défault formulaire unique
    Par hocine dans le forum Access
    Réponses: 3
    Dernier message: 04/01/2006, 11h50
  5. Réponses: 1
    Dernier message: 29/11/2005, 12h28

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