2016-04-28 14 views
1

Ich habe Oracle Forms 10g Formular erstellt und möchte LOV durch Drücken der Taste anzeigen. Ein Wenn-Knopf-Pressed Auslöser ich habe:Oracle Formulare 10g LOV nicht zum zweiten Mal

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

LOV 6 Spalten und 2 von ihnen sind 2 Artikel gebunden: MyBlock.Item1 und MyBlock.Item2. Wenn ich die Taste drücke, erscheint LOV und ich kann eine Auswahl treffen. LOV fügt Daten in MyBlock.Item1 und MyBlock.Item2 ein und alles ist in Ordnung. Aber wenn ich eine andere Wahl treffen und die Taste erneut drücken möchte, erscheint LOV nicht. Ich weiß nicht, was das Problem ist.

Button und beide Elemente sind im selben Datenblock, ich setze Update Erlaubte und Erforderlich auf Nein für beide Elemente und Maus Navigiere zu Nein für Button (Ich sah dies in einigen Foren).

+0

Haben Sie mit show_lov versucht? – pablomatico

+0

@pablomatico Danke. Ja, ich habe versucht mit 'a_value_chosen: = Show_Lov ('MY_LOV'); \t IF a_value_chosen THEN ... 'aber zum zweiten Mal ist a_value_chosen nicht wahr, weder false, noch ist es null. – dragy

+0

Sind Sie sicher, dass Ihr aktueller Artikel myblock.item1 ist, wenn Sie show_lov aufrufen? – pablomatico

Antwort

0

ich endlich gefunden Lösung (Oracle OTN Diskussion verwendet wird). Das Problem war gespeicherte Prozedur, die ich nach dem ersten Auftauchen von LOV aufrufen. Zum ersten Mal, nachdem ich einen Wert gewählt habe, lösche ich den Datensatz eines anderen Blocks mit der gespeicherten Prozedur. In dieser Prozedur setze ich die Werte der Spalten, mit denen MyBlock.Item1 und MyBlock.Item2 verbunden sind. Aber auf der Form bleiben die alten Werte auf Gegenständen. Ich habe Update diese zwei Spalten in der Prozedur entfernt und es funktioniert jetzt. Aber ich brauchte diese zwei Felder, um automatisch auf null aktualisiert zu werden.

Die Lösung ist, dass ich zunächst Werte dieser Elemente auf Formular ändern und dann ich gespeicherte Prozedur aufrufen. Es funktioniert jetzt.

0

Befehl Versuche zwischen diesen beiden Linien setzen synchronisieren:

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

Danke, ich habe es versucht, aber es hat nicht funktioniert. Das gleiche. – dragy

+0

Ok es zeigt nicht die Liebe, aber ist der Cursor dort? oder der Cursor befindet sich auf dem anderen Element. –

+0

Cursor ist auf dem anderen Datenblock und Element, weil Code neuen Datensatz auf anderen Datenblock einfügt. Vielleicht macht das ein Problem? – dragy