2016-04-28 5 views
1

J'ai créé le formulaire Oracle Forms 10g et je souhaite afficher la valeur LOV en appuyant sur le bouton. Le déclencheur Quand boutons-Pressée je:Oracle Forms 10g LOV ne s'affiche pas la deuxième fois

go_item('MyBlock.Item1'); 
do_key('LIST_VALUES'); 

LOV a 6 colonnes et 2 d'entre eux sont liés à 2 éléments: MyBlock.Item1 et MyBlock.Item2. Quand j'appuie sur le bouton LOV apparaît et je peux faire un choix. LOV insère des données dans MyBlock.Item1 et MyBlock.Item2 et tout va bien. Mais si je veux faire un autre choix et appuyez à nouveau sur le bouton LOV n'apparaît pas. Je ne sais pas quel est le problème. Le bouton et les deux éléments se trouvent dans le même bloc de données. J'ai défini les options Mise à jour permise et Obligatoire sur Non pour les deux éléments et Navigation vers la souris sur le bouton Non (j'ai vu cela sur quelques forums).

+0

Avez-vous essayé avec show_lov? – pablomatico

+0

@pablomatico Merci. Oui, j'ai essayé avec 'a_value_chosen: = Show_Lov ('MY_LOV'); \t SI a_value_chosen ALORS ... 'mais la deuxième fois que a_value_chosen n'est pas vrai ni faux, c'est null. – dragy

+0

Êtes-vous sûr que votre article actuel est myblock.item1 lorsque vous appelez show_lov? – pablomatico

Répondre

0

I solution finalement trouvé (à l'aide de discussion OTN Oracle). Le problème était la procédure stockée que j'appelle après la première apparition de LOV. La première fois, après avoir choisi une valeur, je supprime l'enregistrement d'un autre bloc en utilisant la procédure stockée. Dans cette procédure, je définis les valeurs des colonnes MyBlock.Item1 et MyBlock.Item2 sont connectés. Mais sur la forme, les anciennes valeurs restent sur les éléments. J'ai supprimé la mise à jour de ces deux colonnes dans la procédure et cela fonctionne maintenant. Mais j'avais besoin que ces deux champs soient mis à jour automatiquement à null.

La solution est que je modifie d'abord les valeurs de ces éléments sur le formulaire, puis j'appelle la procédure stockée. Ça fonctionne maintenant.

0

Essayez de mettre synchroniser la commande entre ces deux lignes:

go_item('MyBlock.Item1'); 
Synchronize; 
do_key('LIST_VALUES'); 
+0

Merci, j'ai essayé mais ça n'a pas marché. La même chose. – dragy

+0

Ok, il ne montre pas le lov, mais le curseur est là? ou le curseur est sur l'autre élément. –

+0

Le curseur est sur l'autre bloc de données et élément car le code insère un nouvel enregistrement sur un autre bloc de données. Peut-être que cela fait un problème? – dragy