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

Formules Discussion :

Problème de formule


Sujet :

Formules

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut Problème de formule
    Bonjour à tous,
    Je suis en train de développer un état; j'ai créer une première formule qui me rend un résultat correct en fonction de la sélection de l'utilisateur et des paramètres remplis voici la formule et une petite explication:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    global numbervar deja_payee;
    if {AIPL.AIPL_POSTDATE}<={?Date} then
    //deja_payee := deja_payee +({AIPL.AIPL_AMOUNT})
    deja_payee := {AIPL.AIPL_AMOUNT}
    else
    //deja_payee :=0
    0
    cette formule s’appelle "deja_payee" elle me rend le montant payé si l'utilisateur choisit en paramètre une date supérieur à la date de paiement ou 0 si l'inverse
    Maintenant je veux créer une autre formule qui s'appelle "solde cumulable" en fonction de la formule "deja_payee" et un enregistrement d'une vue
    le principe de calcul comme suit

    facture N° débit crédit solde
    1 1000 500 500
    2 100 50 550
    et ainsi de suite
    facture N°: c'est le numéro de facture
    débit: c'est le champs de la vue
    crédit: c'est le résultat calculé de la formule "deja_payee"
    solde: c'est le résultat que je voudrais obtenir avec "solde cumulable"
    voila ce que j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    global numbervar solde;
    solde:= solde+({MFT_AR_NON_ANTICIPEE.AINV_DB}-{#deja_payee})
    cette formule me rend un résultat correct si le résultat de la première formule est supérieur à 0 et un résultat incorrect si l'inverse cçd = 0
    merci d'avance

  2. #2
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 204
    Points : 260
    Points
    260
    Par défaut
    Soit vous choisissez d'utiliser une variable soit vous choisissez d'utiliser un total cumulé (vous semblez mélanger les deux)

    Utilisation d'une variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ---------------------------------------------
    global numbervar deja_payee;
    if {AIPL.AIPL_POSTDATE}<={?Date} then
    deja_payee := {AIPL.AIPL_AMOUNT}
    else
    deja_payee :=0;
    ---------------------------------------------
    global numbervar solde;
    global numbervar deja_payee;
    solde:= solde+({MFT_AR_NON_ANTICIPEE.AINV_DB}-deja_payee)
    ---------------------------------------------


    Utilisation d'un total cumulé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ---------------------------------------------
    if {AIPL.AIPL_POSTDATE}<={?Date} then
    {AIPL.AIPL_AMOUNT}
    else
    0
    ---------------------------------------------
    global numbervar solde;
    solde:= solde+({MFT_AR_NON_ANTICIPEE.AINV_DB}-{#deja_payee})

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    J'ai rectifiée le code selon votre réponse mais le résultat est toujours faux.
    Si je calcule un simple solde c'est à dire une simple différence entre le débit et le crédit ({@deja_payee}) le résultat est correcte mais si je calcule un solde cumulable c'est à dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    global numbervar solde;
    solde:=solde+(débit- {@deja_payee})
    le résultat devient faux

  4. #4
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 942
    Points : 2 720
    Points
    2 720
    Par défaut
    un petit "Whileprintingrecords" en debut de formule ??

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par luc_chivas Voir le message
    un petit "Whileprintingrecords" en debut de formule ??
    Désolé mais j'ai pas compris ce que vous voulez dire

  6. #6
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 942
    Points : 2 720
    Points
    2 720
    Par défaut
    je suggérais de rajouter cette instruction au début de la formule, pour forcer CR à réévaluer le contenu des variables.

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par luc_chivas Voir le message
    je suggérais de rajouter cette instruction au début de la formule, pour forcer CR à réévaluer le contenu des variables.
    vous pouvez me donnez la syntaxe complète de cette instruction ou comment l'intégrer dans la formule??
    Merci

  8. #8
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 942
    Points : 2 720
    Points
    2 720
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Whileprintingrecords;
    global numbervar solde;
    solde:=solde+(débit- {@deja_payee})

  9. #9
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par luc_chivas Voir le message
    je suggérais de rajouter cette instruction au début de la formule, pour forcer CR à réévaluer le contenu des variables.
    Vous trouvez dans la pièce jointe un exemple pratique du résultat que j'obtient
    la formule du Crédit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if isnull ( {AIPL.AIPL_POSTDATE}) then
    0
    else if {AIPL.AIPL_POSTDATE}<={?Date} then
     {AIPL.AIPL_AMOUNT}
    else
    0
    Cette formule est dans la section détail puis je fait la somme de cette formule dans la section groupe ou je fais l'affichage des résultats
    La formule solde (Débit - Crédit):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ({MFT_AR_NON_ANTICIPEE.AINV_DB}-{#deja_payee})
    La formule Solde Cumulable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    global numbervar deja_payee;
    //if {AIPL.AIPL_POSTDATE}<{?Date} then
    deja_payee:= deja_payee + {@solde(db)-(cr)}
    J'ai donc un problème au niveau de la première condition de la formule qui calcule le ainsi dans le calcul du solde cumulable
    Images attachées Images attachées

  10. #10
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    J'ai pu résoudre le premier problème.
    Il me reste un autre, je veux créer à la fin du rapport un tableau récapitulatif qui contient le solde cumulable selon l'âge de la facture:
    * 0-30: les factures dont leur dates n'a pas dépassé le 30 jours
    * 31-60: les factures qui ont un âge entre 31 et 60 joures
    et ainsi de suite pour les autres intervalle d'âges.
    J'ai créer dans la section "champs de total cumulé"
    *Debit 0-30: calcule la somme des débits avec une condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {?Date}-{MFT_AR_NON_ANTICIPEE.AINV_POSTDATE}<=30
    * Credit 0-30: Calcule la somme des crédit dont les factures <=30
    puis j'ai créer une formule qui fait la différence entre {#Debit0-30} - {#Credit0-30} pour avoir le solde
    Le problème c'est que parfois dans la section détail je pourrais avoir deu ou plus de lignes de factures par exemples:
    Date | Facture | Débit |Crédit
    10-10-10 | 1000 |10000 |5000
    11-10-10 | 1000 |10000 |5000
    si je fait la somme des crédit le résultat est juste mais si je fais la résultat des débits j' aurai 20000 alors que le débit c'est 10000 seulement et malgré que l'affichage se fait dans la section groupe et non pas la section détails mais à ce que je vois le champs de total cumulé se fait sur le détail
    Veuillez me donner un coup de main pour rectifier le résultat

  11. #11
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 204
    Points : 260
    Points
    260
    Par défaut
    C'est dans les paramètres du total cumulé qu'il faut agir, Il faut décocher "Pour chaque enregistrement" de la section "Evaluer" , et cocher "Au changement de groupe" et lui indiquer le groupe .

  12. #12
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par GaelleH Voir le message
    C'est dans les paramètres du total cumulé qu'il faut agir, Il faut décocher "Pour chaque enregistrement" de la section "Evaluer" , et cocher "Au changement de groupe" et lui indiquer le groupe .
    C'est ce que j'ai fais mais le problème comment ajouter la condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {?Date}-MFT_AR_NON_ANTICIPEE_POSTDATE<=30
    pour qu'il me rend les factures dont leurs âge est inférieur ou égale à 30

Discussions similaires

  1. Excel Problème de formule
    Par jbidou88 dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 12/05/2006, 10h20
  2. PRoblème de formule dans Excel
    Par jbidou88 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/05/2006, 09h35
  3. problème de formulation d'une requête
    Par seiryujay dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/08/2004, 17h13
  4. Problème de formulation de requète
    Par tellitocci dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/06/2004, 05h05
  5. [EXCEL-OLE] Problème de formule
    Par qi130 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 13/10/2003, 18h49

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