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

Forms Oracle Discussion :

Element récapitulatif avec filtre


Sujet :

Forms Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Par défaut Element récapitulatif avec filtre
    Bonjour tout L monde,

    Je développe actuellement une application budgétaire sous oracle forms 6i au sein de l'environnement oracle application 11i .

    Dans mon application j'ai un bloc détail multiligne avec un élément montant indiquant le montant de toute action budgétaire(ligne dans mon bloc détail). Le problème c'est que j'ai 2 types de montant un montant crédit et un autre débit (Comptabilité).

    D'autre part j'ai un bloc contrôle non basé ou j'ai deux éléments affichés qui sont Total Débit et total Crédit.

    Et j'aimerais via une formule de calcule récupérer mon totale crédit et débit en utilisant la fonction de récapitulation somme. Le soucis c'est que je doit introduire la condition suivante pour séparer les deux totaux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     if Sens = 'Débit'
    ....
     
    If Sens ='crédit'
    ....
    J'ai essayé ça dans une unité de programme que j'appelle dans ma formule de calcul mais sans succès.
    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de mongilotti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2003
    Messages : 314
    Par défaut
    Tu créer une procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    CREATE OR REPLACE PROCEDURE CAL_TOT IS
    BEGIN
      GO_BLOCk('BLOCK');
      FIRST_RECORD;
      WHILE CHAMP IS NOT NULL
        LOOP
          IF :SENS = 'C' THEN
            :SOM_CRE := :SOM_CRE+:MONTANT;
         ELSE
            :SOM_DEB := :SOM_DEB+:MONTANT;
         END IF;
       IF :SYSTEM.LAST_RECORD = 'FALSE' THEN
         NEXT_RECORD;
       ELSE
         EXIT;
       END IF;
    END LOOP;
    tu aura enfin les sommes que tu veux, tu mets l'appel à cette procédure dans le déclencheur WHEN_VALIDATE_ITEM du champ MONTANT.

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    pas de go_block possible dans un when_validate_item.. Et puis c'est vachement long de reparcourir le block

    Il existe une façon simple de calculer "à la volée" des sommes sur un block. Par contre cela nécessite d'avoir le block en mode "fetch all records" (tous les enregistrements ramenés)

    Tu crées 2 items en column_formula :
    Item LE_CREDIT formule : MA_FONCTION('C')
    Item LE_DEBIT formule : MA_FONCTION('D')
    Tu crées une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MA_FONCTION (p_type IN VARCHAR2) RETURN NUMBER IS
      IF :block.SENS = p_type THEN
            return :block.MONTANT;
         END IF;
    return NULL;
    end;
    Et enfin, tu crées tes 2 items de somme sur LE_DEBIT et LE_CREDIT


    Ce système est très puissant, car il permet aussi de pouvoir tester dans ta fonction un paramètre_forms et donc d'avoir à la volée le calcul de fait sur toute les lignes.
    Exemple : Je veux le total du mois sur lequel je suis positionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Trigger When_new_record_intance 
    :parameter.p_mois := trunc(:block.date_ecr, 'MM');
     
    1 item CF appelle ma_fonction
     
    La fonction ma_fonction :
    IF trunc(:block.date_ecr, 'MM') = :parameter.p_mois THEN return :block.montant; END IF;
     
    Et l'item total (summary sur CF)

Discussions similaires

  1. [VBA EXCEL] Protection feuille avec filtre auto
    Par mirumoto dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/01/2006, 10h48
  2. compteur de ligne excel avec filtre
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/12/2005, 11h04
  3. [VBA] supression element Acces avec Excel
    Par Emcy dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 07/11/2005, 17h30
  4. Requete avec filtre sur un champ
    Par podz dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/02/2005, 14h37
  5. [Plugin] Bouton browse projet avec filtre
    Par jcarre dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 09/04/2004, 13h56

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