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 :

Somme et VraiFaux dans un état


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut Somme et VraiFaux dans un état
    Bonjour,

    Depuis que j'ai migré ma base access en projet ADP, mes calculs dans mes états qui incluent des VraiFaux et Somme sont reconnus comme incorrects :

    "L'expression "Count(IIf([Champ1]=15,[Champ2]))" n'est pas valide.
    Les fonctions d'agrégation ne sont autorisées que dans les champs de destination de la source d'enregistrement.


    Voici un exemple de calcul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Somme(VraiFaux([Champ1]=15;[Champ2]))
    Lorsque je n'utilise que VraiFaux ou Somme alors ça marche très bien, mais les deux en même temps ça ne marche plus.

    Si quelqu'un en connait la cause...

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Somme(VraiFaux([Champ1]=15;[Champ2]);0)
    Quand tu utilises un vraifaux, la formule est la suivante :

    vraifaux (test ; si vrai ; si faux) et toi tu n'avais rien mis dans si faux, donc...

    @+.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Oui parce-que l'on est pas obligé de mettre de valeur dans 'si faux'.
    En tout cas j'ai beaucoup d'états qui fonctionnent comme ça. Mais au cas où j'ai rajouté quelque chose et l'erreur est toujours la même.

    Merci quand même.

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Peux-tu mettre un exemple des valeurs contenus dans les champs : Champ1 et Champ2 !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Oui bien sûr.

    Pour cet exemple le champ1 contient les valeurs : 15, 30, 40, 65....
    Le champ2 : 145632,145236,145785...
    Tous deux ont comme format 'int'

  6. #6
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Bougre d'âne, lis donc ton erreur !

    "L'expression "Count(IIf([Champ1]=15,[Champ2]))" n'est pas valide.
    Les fonctions d'agrégation ne sont autorisées que dans les champs de destination de la source d'enregistrement."


    Crogneugneu ....

    Ici l'impporta

  7. #7
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Bougre d'âne, lis donc ton erreur !

    "L'expression "Count(IIf([Champ1]=15,[Champ2]))" n'est pas valide.
    Les fonctions d'agrégation ne sont autorisées que dans les champs de destination de la source d'enregistrement."


    Crogneugneu ....

    Ici l'important n'est pas la fonction 'IIF()' mais la fonction 'COUNT()'
    Cette derniere compte le nom d'enregistrements; pour les additionner, il faut utiliser la fonction .....

    Alors qui connait la réponse ....

    'Sum()' bien sûr !

    Bonne Continuation

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Euh non toujours pas.
    Bon en fait il y a le même problème que ce soit en mélangeant sum avec IIf ou count avec IIf.
    Mais il se trouve que je me sers des deux dans mes états. Et dans l'état je rentre 'Compte' ou 'Somme' et dans l'erreur ce doit être traduit en anglais je suppose.

  9. #9
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Deuxième point, je suis allé vérifier la syntaxe dans l'aide Access et la condition "SiFaux" de la fonction "IIF()" n'est pas optionel.
    A mon avis, ta fonction "IIF()" te retourne une erreur qui ne peut être prise en compte dans un calcul "Sum()"

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Je vais revérifier ça aujourd'hui mais il est clair que ça marchait très bien jusqu'ici. C'est depuis que j'ai migré ma base en un projet ADP + SQL Server.

    Je te dis ça dans la matinée.

    Merci.

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    on peut très bien simuler un count avec un if



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(iif(monchamp=mavaleur,1,0)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    C'est bien ce qu'il me semble. Alors je n'ai pas du me focaliser sur la bonne erreur. Ca doit plutot venir de ce qui se trouve dans le IIf qui pose problème. Je vais me pencher là-dessus aujourd'hui.

  13. #13
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =Somme(VraiFaux([Champ1]=15;[Champ2]);0)
    A mon avis le but est d'additionner "Champ2" pour les enregistrements où
    "Champ1 = 15" et non de les compter. A vérifier

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Toftof
    Deuxième point, je suis allé vérifier la syntaxe dans l'aide Access et la condition "SiFaux" de la fonction "IIF()" n'est pas optionel.
    A mon avis, ta fonction "IIF()" te retourne une erreur qui ne peut être prise en compte dans un calcul "Sum()"
    Voilà j'ai donc rajouter une valeur si faux mais ça ne change rien

    Citation Envoyé par random
    on peut très bien simuler un count avec un if
    Bonne idée, je n'avais pas saisi le sens. Mais toujours le même retour.

    Citation Envoyé par Toftof
    A mon avis le but est d'additionner "Champ2" pour les enregistrements où
    "Champ1 = 15" et non de les compter. A vérifier
    Non dans ce cas précis je souhaite bien compter le nombre de champs où la valeur est à 15. C'est une étiquette que je place en fin d'état pour faire une sorte de bilan.

    Il doit bien s'agir d'un problème du passage au projet ADP. Mais je ne vois pas d'où ça peut venir

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Voilà une nouveauté : l'erreur n'apparait que lorsque je met mon étiquette dans l'en-tête ou le pied d'état. Ailleurs je ne reçois aucun message.

    De plus en plus bizarre n'est-il pas ?

  16. #16
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Dans le cas d'un compte d'enregistrements, j'ai l'habitude d utiliser la fonction
    "DLOOKUP()" comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NbEnr = dlookup("COUNT([Champ2])", "MaTable","[Champ1] = 15")
    Il faut reconnaitre que j'utilise cette fonction assez facilement car elle se révèle très fiable, surtout lorsqu'elle est couplée avec la fonction "Nz()"

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Il s'agit de code VBA ??
    Parce-que personnellement tous les calculs de mon état se trouvent dans l'état lui-même.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Autant pour moi, ça marche. Il m'a remplacé la fonction DLookup par RechDom.

    Bon je vais voir pour utiliser ça. Ca ne m'arrange pas car la source de l'état est indiquée dans l'étiquette et il se trouve que je suis amené à changer de source régulièrement par mon code VBA

  19. #19
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Il te suffit de mettre la propriété de ton étiquette dans le code.
    Du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MaValeur = dlookup("Count([Champ1])","MaTable","[Champ2] = 15")
    MonEtiquette.Label = MaValeur
    Après il faut s'adapter en fonction du type d'objet de ton étiquette.
    Dans l exemple, j'ai pris le terme d'étiquette pour donnée acquise.

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 48
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Mêmes symptomes et meme probleme pour moi : J'effectue une migration de fichier mdb vers un fichier adp, et à la correction des etats, j'ai la meme erreur pour les sommes.
    Pour un label, quand le champ "Source Controle" de l'onglet "Données" de la fenetre des propriétés est égal à un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Sum([Montant_HT] + [Montant_TVA])
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Sum([Montant_HT]/100)
    ou
    l'erreur apparait mais il n'y a pas d'erreur lorsque la formule est de la forme :
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Sum([Montant_HT])/100
    Avant (format de fichier adp), tous les états marchaient correctement ... Si quelqu'un est inspiré !

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/02/2015, 06h21
  2. calculer la somme des heures dans un état
    Par fahdmounkaila dans le forum WinDev
    Réponses: 3
    Dernier message: 10/08/2011, 16h53
  3. [AC-2003] Comptage VraiFaux dans un état
    Par alain063 dans le forum IHM
    Réponses: 1
    Dernier message: 21/11/2009, 21h20
  4. [AC-2007] calcul de somme et filtre dans un état
    Par guillaume2vo dans le forum IHM
    Réponses: 1
    Dernier message: 04/11/2009, 09h47
  5. faire une somme dans un état
    Par PAINCO dans le forum Access
    Réponses: 1
    Dernier message: 23/06/2005, 20h41

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