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 :

Situation en boucle


Sujet :

Forms Oracle

  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Par défaut Situation en boucle
    Bonjour,

    j'ai un problème qui me dérange bcp :

    j'ai ces tables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create table LIVRAISON
    (
      CODE_LIVRAISON integer not null,
      NUM_COMMANDE   integer not null,
      DATE_LIVRAISON DATE
    )
    create table LIV_ART
    (
      CODE_LIVRAISON  integer not null,
      REFERENCE       integer not null,
      QUANTITE_LIVREE NUMBER,
      QTE_RESTEE             NUMBER
    )
    Le but est de calculer et mettre à jour la valeur de l'objet QTE_RESTEE, j'ai essayé avec ce code mais toujours je trouve des failles:
    au niveau du champ quantité livrée avec le déclencheur key_next_item:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    declare 
    	n   number;
    	qtr number;
    	up  number;
    begin
     
    select SUM(t.quantite_livree) into n
    from livraison l, liv_art t
    where l.num_commande = :livraison.num_commande
    and t.reference = :liv_art.reference
    and l.code_livraison = t.code_livraison;
     
    select min(t.qte_restee) into qtr
    from livraison l, liv_art t
    where l.num_commande = :livraison.num_commande
    and t.reference = :liv_art.reference
    and l.code_livraison = t.code_livraison;
     
    if n is not null then
       up := get_item_property('liv_ART.QUANTITE_livree',DATABASE_VALUE);
       if :liv_art.quantite_livree > up then
     
          if (qtr - (:liv_art.quantite_livree - up)) < 0 then
         	    messagebox('  Vous avez dépasser la quantité commandée ');
    	    raise form_trigger_failure;
          else
       	      :QRL := qtr - (:liv_art.quantite_livree - up);
       	      next_record;
          end if;
     
       else
           :QRL := (up - :liv_ART.QUANTITE_LIVREE) + QTR;
           next_record;
     
       if :liv_art.quantite_livree > qtr then
     
      	    messagebox('  La quantité livrée dépasse la quantité restante !!!!  ');
    	    raise form_trigger_failure;
       else 
     
        :QRL := qtr - (:liv_art.quantite_livree) ;
        next_record;
     
       end if;
       end if;
     
    else 
     
       :QRL := :liv_art.QTECOMM - :liv_art.quantite_livree ;
       next_record;
     
    end if;
    end if;
    end;
    Ci joint une capture de la forme pour comprendre mon problème.
    http://www.developpez.net/forums/att...1&d=1308757761
    Merci pour vos propositions.
    Images attachées Images attachées  

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Par défaut
    Bonjour,

    je ne sais pas si quelqu'un a remarqué le problème dans ce code, j'ai essayé mais toujours je retourne dans le même problème.

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Par défaut
    Est ce qu'il me faut diviser ce code sur d'autres déclencheurs ?

    Je suis bloqué sur cette situation .

    Merci pour vos idées.

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Par défaut
    Bonjour,

    Si vous voulez, on suit ce jeu de test:

    Article de reference 1, la quantité commandée est 20.
    1er cas : 1ère livraison

    ref: 1, Qté livrée: 10, Qté commandée: 20, Qté restante: 10

    2ème cas : Mise à jour de la première livraison

    ref: 1, Qté livrée: 8, Qté commandée: 20, Qté restante: 12

    3ème cas: Deuxième livraison

    ref: 1, Qté livrée: 8, Qté commandée: 20, Qté restante: 0

    Jusqu'à ici ça marche mais

    4ème cas: Mise à jour de la deuxième livraison

    dans ce cas, suite à la modification de la quantité livrée le résultat pour la quantité restante est incorrecte.

    Merci de m'aider à sortir de cette situation.

  5. #5
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 34
    Par défaut
    bonjour
    je vois pas la quantité commandée dans la deuxième table

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Par défaut
    Bonjour,

    la quantité commandée est extraite d'une autre table (détails d'une commande).

    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 TABLE DET_COMM
    (
      NUM_COMM  integer NOT NULL,
      REFERENCE       integer NOT NULL,
      QUANTITE_COMMANDEE NUMBER,
    )
    CREATE TABLE COMMANDE
    (
      NUM_COMM  integer NOT NULL,
      DATE_COMM DATE
    )
    CREATE TABLE ARTICLE
    (
      REFERENCE       integer NOT NULL,
      QUANTITE         NUMBER,
      LIBELLE             VARCHAR2(100)
    )
    Comme ça la structure est complète.
    Merci pour vos propositions.

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Par défaut
    Bonjour,

    La situation est résolue après des tests de code.
    OOOOOO c dure.

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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [langage] if et boucle { ..}
    Par kacedda dans le forum Langage
    Réponses: 15
    Dernier message: 28/04/2003, 17h25
  3. [directsound] boucle de traitement de son
    Par gargle dans le forum DirectX
    Réponses: 5
    Dernier message: 24/03/2003, 10h47
  4. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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