Developpez.com

Une très vaste base de connaissances en informatique avec
plus de 100 FAQ et 10 000 réponses à vos questions

Tutoriel Oracle Forms : manipulations dynamiques 2ème partie


précédentsommairesuivant

4. L'écran de test TEST_LOV.FMB

Image non disponible

Une LOV générique a été définie sur l'item Date entrée

Pour tester la LOV et le retour des valeurs nous allons appeler la LOV depuis le champ Date entrée du premier enregistrement (CLARK)

Image non disponible

Et sélectionner la ligne correspondant à Duboudin dont nous devrions récupérer la date d'entrée

Image non disponible

Ce qui est bien le cas.


LOV de validation

Pour le cas particulier de l'utilisation des LOV génériques pour la validation des items, c'est cette fois le trigger de niveau forme WHEN-VALIDATE-ITEM qui entre en jeu

Ce trigger vérifie qu'une LOV générique est définie puis exécute la procédure Validate_Lov() If Instr( Get_Item_Property( :system.trigger_item, HINT_TEXT ), '(LOVV)' ) > 0 Then Validate_Lov ; End if ; La requête est constituée de la manière suivante :
-- Constitution du Select -- LC$Ordre := 'Select 1 From DUAL Where exists(Select ' ; If Tab_col.first is not null Then For i IN Tab_col.first..Tab_col.last Loop If Tab_col(i).fl_val = 'O' Then -- Colonne de validation -- LC$Colonne := Tab_col(i).colonne ; LN$ColType := Tab_col(i).col_type ; LC$Format := Trim(Tab_col(i).format) ; LC$Ordre := LC$Ordre || Tab_col(i).colonne ; exit ; End if ; End loop ; End if ; Mise en conformité de format de la valeur a contrôler -- Valeur du champs a controler -- LC$Champ := Name_In( Name_In( 'system.cursor_item' ) ) ; If LN$Coltype = 12 Then -- Type DATE -- If LC$Format is null Then LC$Champ := '''' || LC$Champ || '''' ; Else -- Format défini au niveau de l'item -- forms_ddl('ALTER SESSION SET NLS_DATE_FORMAT = ''' || LC$Format || ''''); LC$Champ := '''' || To_char( To_date( LC$Champ, 'DD/MM/YYYY HH24:MI:SS') ,LC$Format ) || '''' ; End if ; Elsif LN$Coltype In (1,96) Then -- Type CHAR -- LC$Champ := '''' || LC$Champ || '''' ; End if ; Ajout des clauses finales -- Constitution du filtre -- If LC$Where is not null Then LC$Filtre := ' Where ' || LC$Where ; End if ; IF LC$Clause is not null Then LC$Filtre := LC$Filtre || ' ' || LC$Clause ; End if ; If Instr( Upper(LC$Filtre), 'WHERE' ) > 0 Then LC$Filtre := LC$Filtre || ' And ' || LC$Colonne || ' = ' || LC$Champ ; Else LC$Filtre := LC$Filtre || ' Where ' || LC$Colonne || ' = ' || LC$Champ ; End if ; LC$Ordre := LC$Ordre || ' FROM ' || LC$From || LC$Filtre || ')'; Et enfin soumission à la procédure stockée PKG_GESTION_LOV.Controle_Valeur -- Test de la valeur -- If PKG_GESTION_LOV.Controle_Valeur( LC$Ordre ) = 0 Then -- Valeur non trouvée appel de la LOV-- Affiche_lov ; End if ; Un retour à zéro indique qu'aucune correspondance n'est trouvée et la LOV générique est affichée

Attention. Le trigger de niveau forme WHEN-VALIDATE-ITEM ne se déclenchera qu'après un trigger identique de niveau plus bas (bloc ou item).Si vous avez défini ce type de trigger sur l'item, il sera peut-être nécessaire de définir sa propriété Ordre d'exécution à la valeur Après (After)


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Cet article s'applique à la version 9i et 10g d'Oracle Forms