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 :

SQL pour remplacer un CpteDom [AC-2013]


Sujet :

IHM

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut SQL pour remplacer un CpteDom
    Bonjour,

    J'ai un petit soucis de rapidité d'exécution d'une fonction de domaine dans un formulaire pour afficher dans une zone de texte le nombre total d'enregistrements de la requête source de ce formulaire.

    Actuellement j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("*";"R_RechercheCommerces") & VraiFaux(CpteDom("*";"R_RechercheCommerces")>1;" OCCURENCES";" OCCURENCE")
    Le problème étant qu'en fonction des critères de recherche que je passe sur le formulaire, au requery la zone de texte met parfois jusqu'à 5 sec pour afficher le nouveau nombre d’enregistrements trouvés.

    Après avoir fait des recherches, j'ai compris que c'était apparemment normal pour une fonction de domaine, mais qu'il est possible d'accélérer le processus directement en SQL.

    Je n'ai pas réussi à la lecture de différents tutos sur le sujet à écrire correctement cela. Comment faire ?

    Merci

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour,

    Un équivalent en SQL de DCount est

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) as NbOccurence from [R_RechercheCommerces]

    Personnellement je ferai plutôt dans mon formulaire :

    • créer un champ calculé NbOccurence qui vaut =CpteDom("*";"R_RechercheCommerces"). Ce champ est invisible.
    • puis un second champ calculé AffNbOccurencequi vaut =[NbOccurence] & VraiFaux([NbOccurence]>1;" OCCURENCE"; " OCCURENCES"). Ce champ est visible.
      Avec ta fonction actuelle tu comptes 2 fois le nombre d'enregistrements : 1 fois pour avoir ce nombre et une fois pour déterminer si tu dois employer le singulier ou le pluriel.

    ou encore

    • un champ NbOccurence visible et une étiquette " OCCURENCE(S)" qui évite d'avoir le test.


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Bonjour marot_r et merci pour ta réponse.

    Je viens de tester ce que tu proposes, la méthode avec les deux champs calculés, et effectivement c'est beaucoup plus rapide. Je me doutais bien que compter 2 fois le nombre d'enregistrements n'était pas terrible, mais c’est encore pire que ce que je croyais car ça multiplie le temps de calcul de manière astronomique !

    Si ça ne t’embête pas, même question pour un SomDom au lieu de CpteDom, est-ce que je dois ouvrir un autre sujet pour ça ?

    Ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="Dû : " & Format(SomDom("montant";"R_RechercheRecettes";"[dateReglement] Is Null");"Monétaire")
    s'exécute à une vitesse correcte.

    En revanche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="Payé : " & Format(SomDom("montant";"R_RechercheRecettes";"Not ([dateReglement] Is Null)");"Monétaire")
    rame lamentablement.

    Pour quelle raison ? Je ne comprends pas, y a t-il autant de différence en terme de vitesse d'exécution entre la prise en compte des Null et des non Null ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Je pense qu'il serait mieux de clore cette discussion (bouton en bas de discussion) et d'ouvrir une nouvelle discussion parce que je n'ai vraiment aucune idée d'où cela vient.

    Ça va donner plus de visibilité à ta demande.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Très bien je verrai ça plus tard.
    Merci

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

Discussions similaires

  1. Requête SQL (simple) pour remplacer mot
    Par Ninette85 dans le forum Langage SQL
    Réponses: 16
    Dernier message: 17/03/2011, 18h13
  2. Réponses: 1
    Dernier message: 16/04/2010, 11h56
  3. Réponses: 2
    Dernier message: 11/06/2008, 14h17
  4. Réponses: 7
    Dernier message: 21/09/2006, 14h06
  5. [SQL ] Fonction pour remplacer caract. speciaux et accentué
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 3
    Dernier message: 31/01/2006, 15h16

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