Hallo,
ich habe einen Dialog mit 3 Listboxen, wobei die 3. Listbox abhängig von der Auswahl der 1. Listbox gefüllt werden soll.
Leider funktioniert es nicht und ich drehe mich im Kreis...
Hier ist mein Code (der Dialog wurde im selben Makro gezeichnet, ich habe nur nicht den ganzen Code gepostet weils sonst zu lange wär):
Code: Alles auswählen
'Listbox befüllen
oListBox1 = oDialogControl.getControl("ListBox1")
While oResultSet1.Next()
b = oResultSet1.getString(1) '1. Spalte in Tabelle
aListe1 = oListBox1.getModel().StringItemList
n = UBound(aListe1())
redim preserve aListe1(n + 1)
aListe1 (n+1) = b
oListBox1.getModel().StringItemList = aListe1
Wend
oListBox2 = oDialogControl.getControl("ListBox2")
While oResultSet2.Next()
b = oResultSet2.getString(1) '1. Spalte in Tabelle
aListe2 = oListBox2.getModel().StringItemList
n = UBound(aListe2())
redim preserve aListe2(n + 1)
aListe2 (n+1) = b
oListBox2.getModel().StringItemList = aListe2
Wend
oListCtr1 = oDialogControl.getControl("ListBox1")
oTextCtr1 = oListCtr1.SelectedItem
sSQL3 = "SELECT distinct s_lname || ' ' || s_fname as Name from staff, project, task, allocations where p_name='"+oTextCtr1+"' and s_id=a_s_id and a_t_id=t_id and t_p_id=p_id order by Name;"
oStatement3 = oVerbindung.createStatement
oResultSet3 = oStatement3.executeQuery( sSQL3 )
oListBox3 = oDialogControl.getControl("ListBox3")
While oResultSet3.Next()
b = oResultSet3.getString(1) '1. Spalte in Tabelle
aListe3 = oListBox3.getModel().StringItemList
n = UBound(aListe3())
redim preserve aListe3(n + 1)
aListe3 (n+1) = b
oListBox3.getModel().StringItemList = aListe3
'msgbox b
Wend
'Dialog sichtbar machen
oDialogControl.setVisible( True )
oDialogControl.execute
'msgbox "oDialogControl.endExecute"
oDialogControl.endExecute
msgbox oTextCtr1
end sub
Der Select Befehl liefert das richtige Ergebnis und wird auch an dieser Stelle ausgeführt. Das Problem dürfte an der Zeile
oTextCtr1 = oListCtr1.SelectedItem liegen.
Mache ich diese Zeile nach Beendigung des Dialog, so erhalte ich das richtige Ergebnis (Selektion der Listbox1), mache ich diese Anweisung jedoch an der Stelle, an der sie im obigen Code ist, so wird sie nicht ausgeführt und in oTextCtr1 steht nichts drinnen.
Kann man SelectedItem nicht zur Laufzeit des Dialogs bzw vor Beendigung des Dialogs ausführen?
Ich sehe nämlich keine andere Möglichkeit die 3. Listbox zu befüllen, da ich einfach die Auswahl der 1. Listbox dazu brauche. Also die Reihenfolge des Ablaufs lässt sich nicht ändern (ich muss zuerst die Listbox 1 befüllen, die Selektion dann auslesen, auf Grund der Selektion den Select Befehl ausführen und dann die Listbox 3 damit befüllen).
Bitte um Hilfe
