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

Requêtes et SQL. Discussion :

Fonction IIf sur champs monétaires [Toutes versions]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur en construction
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Fonction IIf sur champs monétaires
    Salut tout le monde,

    J'ai un petit souci sur une fonction IIf placée dans une requête, la voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf(([Factures - Requête 2].[Montant TVAC]=[CA 2].[Total TVAC]),0,1) AS Expr1
    Les champs "Montant TVAC" et "Total TVAC" sont des champs monétaires.

    La fonction IIf me renvoi TOUJOURS la valeur 1.

    Alors que quand je fais la soustraction simple de ces deux champs (Montant TVAC-Total TVAC) j'obtiens bien 0 si ils sont égaux.

    Il y a donc forcement un problème venant du IIf mais je ne vois pas lequel !

    Es ce le fait que ce soit des nombres monétaires, je ne comprends pas


    Merci pour votre aide

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Flogo2323,

    Le VraiFaux sait tester les champs de type "Monétaire". En revanche, si les deux champs sont Null, alors Access les considére comme différents !...

    As-tu affiché, en clair, dans la même requête, la valeur de tes deux champs [Factures - Requête 2].[Montant TVAC] et [CA 2].[Total TVAC] ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur en construction
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonjour Richard,

    Et bien en effet j'ai bien affiché les deux champs dans ma requête.

    En fait même quand ces champs ne sont pas nul mais égaux, mon iif me rend toujours 1.

    De plus, je viens de constater un autre problème assez analogue :
    Etant donné que mon iif ne fonctionnait pas, je me suis contenté de faire la soustraction des deux puis dans un formulaire j'ai fait une mise en forme conditionnelle suivant le résultat de la soustraction.

    C'est à dire, si le résultat est nul alors "case" verte sinon "case" rouge.

    Et là non plus cela ne marche pas, elle reste tous le temps rouge alors que je vois que le contenu de la "case" en question est bien égale à 0.00 E (E = Euros).

    Que ce passe t il, on a l'impression que cette valeur n'est pas exploitable !


    Merci d'avance pour votre aide

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Flogo2323,

    Peux-tu, directement dans la table, et sur un enregistrement concerné :
    • supprimer, manuellement, les 2 montants ;
    • sauvegarder l'enregistrement ;
    • saisir, manuellement, ces 2 montants ;
    • lancer ta requête et vérifier le résultat pour cet enregistrement.

    ?

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 739
    Points : 57 511
    Points
    57 511
    Billets dans le blog
    42
    Par défaut
    bonjour,

    Citation Envoyé par flogo2323 Voir le message
    .. le contenu de la "case" en question est bien égale à 0.00 E (E = Euros).
    probablement un problème d'arrondi avec un résultat qui est égal en fait à un truc du genre 0.00005154 E

    peut-être une solution dans la discussion:
    http://www.developpez.net/forums/d97...centimes-pres/

    puis dans la contribution:
    http://www.developpez.net/forums/d97...arrondir-prix/

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur en construction
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    En faite je viens de comprendre ce qui ce passait :

    Mon champ [CA 2].[Total TVAC] est un champ calculé qui me retourne 2 décimales visuellement alors qu'en fait lorsque l'on place le curseur dessus, 3 décimales sont présentes.

    Mon champ [Factures - Requête 2].[Montant TVAC] est un champ saisi qui comportera donc forcément 2 décimales


    Et c'est de là que vient l'erreur !


    Mais voilà, je n'arrive pas à limiter le calcul sur 2 décimales. Car lorsque je vais dans les propriétés du champ, et que je demande 2 décimales, c'est en réalité que l'affichage du nb de décimales qui changent pas leurs nb calculé.

    Merci de vos réponse

  7. #7
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Le diagnostic de Fabien (que je salue) est le bon, donc.

    Il faut agir, en amont, pour arrondir tes montant avant de les éditer/afficher et, donc, avant de les stocker dans la table.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur en construction
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en construction
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    UN GRAND MERCI A VOUS DEUX

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

Discussions similaires

  1. [MySQL] requete update avec fonction php sur champs
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/10/2008, 09h14
  2. Fonction search sur champs de BDD
    Par poosh dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 26/07/2007, 12h54
  3. Probleme de filtre avec fonction Dlookup sur champ texte
    Par Piloupilou999 dans le forum Access
    Réponses: 5
    Dernier message: 27/01/2007, 22h41
  4. Réponses: 4
    Dernier message: 09/10/2006, 11h15
  5. Fonction LEFT sur champ de type "text" : méthodes
    Par MatthieuQ dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/06/2004, 11h15

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