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 :

Affectation écran


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut [Résolu]Affectation écran
    Bonjour, j'ai un projet qui utilise du forms et je ne comprends pas tout.
    Je développe:
    j'ai un écran qui va chercher des données dans une base pour mettre dans différentes colonnes. Dans une de ces colonnes j'ai un nombre (X) d'affiché d'une longueur de 10 et dans une autre colonne un alphanumérique (Y) de longueur de 2.
    Mon probleme est que si le code alpha (Y) correspond a une certaine categorie référencé dans une autre table, le nombre (X) peut être soit de longueur 10 ou 8 en complétant par des zéros si ce n'est pas assez long.

    Ex: Y : 8V => correspond à la catégorie S2
    X : 48491196 => ajouter des zéros pour avoir une longueur de 10
    =>0048491196.

    Y : CD => correspond à la catégorie C39
    X : 484996 => ajouter des zéros pour avoir une longueur de 8
    =>00484996.

    Si quelqu'un voit ce que je veux expliquer et s'il sait comment je dois m'y prendre, je prends avec plaisir

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Je pense que, dans votre cas, vous devez adapter le masque de format du numérique en fonction de Y. Malheureusement, le masque de format est attribué à la colonne entière et ne peux varier d'une ligne à l'autre.
    Plus simple serait d'utiliser un TEXT ITEM de type CHAR et d'ajouter les 0 dans un trigger When-New-Record-Instance.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut
    J'ai fait le trigger avec ca sans m'occuper des changements de catégorie mais si je le met en declencheur sur l'élément du bloc ou de l'élément ca ne change rien.
    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
    BEGIN
    if   ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 0) then
            :TBCOLIS_SDFC.NUMREC := '0000000000';
              else if  ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 1) then
                         :TBCOLIS_SDFC.NUMREC := '000000000' || :TBCOLIS_SDFC.NUMREC;
              else if  ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 2) then
                           :TBCOLIS_SDFC.NUMREC := '00000000' || :TBCOLIS_SDFC.NUMREC;
                  else if  ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 3) then
                             :TBCOLIS_SDFC.NUMREC := '0000000' || :TBCOLIS_SDFC.NUMREC;
                    else if  ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 4) then
                             :TBCOLIS_SDFC.NUMREC := '000000' || :TBCOLIS_SDFC.NUMREC;
                      else if  ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 5) then
                                 :TBCOLIS_SDFC.NUMREC := '00000' || :TBCOLIS_SDFC.NUMREC;
                        else if  ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 6) then
                                   :TBCOLIS_SDFC.NUMREC := '0000' || :TBCOLIS_SDFC.NUMREC;
                        else if  ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 7) then
                                     :TBCOLIS_SDFC.NUMREC := '000' || :TBCOLIS_SDFC.NUMREC;
                            else if  ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 8) then
                                       :TBCOLIS_SDFC.NUMREC := '00' || :TBCOLIS_SDFC.NUMREC;
                               else if  ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 9) then
                                         :TBCOLIS_SDFC.NUMREC := '0' || :TBCOLIS_SDFC.NUMREC;
                                else if  ((LENGTH (:TBCOLIS_SDFC.NUMREC)) = 10) then
                                           :TBCOLIS_SDFC.NUMREC := :TBCOLIS_SDFC.NUMREC;
                                end if;
                            end if;
                             end if;
                          end if;
                      end if;
                    end if;
                    end if;
                  end if;
              end if;
            end if;
        end if;      
    END;

  4. #4
    Invité
    Invité(e)
    Par défaut
    tu devrais regarder le elsif à la place du else if.
    et regarde aussi la balise de code de l'interface du forum qui est représenté par #...

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Et puis vous pourriez réaliser la même chose en une unique isntruction en utilisant l'instruction LPAD()
    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
    SQL> set serveroutput on
    SQL> 
    SQL> DECLARE
      2    v VARCHAR2(20);
      3  BEGIN
      4    FOR i IN 3 .. 6 LOOP
      5      v := LPAD(TO_CHAR(i),i,'0');
      6   DBMS_OUTPUT.PUT_LINE(v);
      7    END LOOP;
      8  END;
      9  
     10  /
    003
    0004
    00005
    000006
     
    Procédure PL/SQL terminée avec succès.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut
    merci pour ces compléments, surtout le LPAD()
    mon problème est toujours là mais je sens que ça va avancer
    Si mets donc dans WHEN-NEW-ITEM-INSTANCE juste un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :TBCOLIS_SDFC.NUMREC := LPAD(:TBCOLIS_SDFC.NUMREC,10,'0');
    dans toute la colonne cette fonction devrait remplacer un Format dans les propriétés ?
    J'ai essayé (au petit bohneur la chance) de mettre le trigger en déclancheur de mon bloc et en déclencheur de l'élément mais rien ne change.

Discussions similaires

  1. Comment affecter une couleur de fond à tous les écrans ou form ou list ?
    Par andrianiaina dans le forum Développement Mobile en Java
    Réponses: 0
    Dernier message: 05/05/2011, 15h47
  2. [PPT-2007] comment affecter une macro "ouvrir en mode plein écran" à un diaporama PPSX?
    Par jerky1 dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 12/04/2011, 12h06
  3. Réponses: 17
    Dernier message: 17/10/2002, 20h06
  4. plein écran
    Par patapetz dans le forum OpenGL
    Réponses: 9
    Dernier message: 21/08/2002, 14h15
  5. recuperer la résolution de l'écran
    Par florent dans le forum C++Builder
    Réponses: 11
    Dernier message: 07/06/2002, 15h01

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