ich hab mal wieder nen paar handwerkliche Fragezeichen, und gehe von ein paar dämlichen Denkfehlern aus. Vielleicht könnt Ihr mir auf die Sprünge helfen.
Aus einem Formular heraus rufe ich einen Dialog auf, der (o Wunder) einige Felder enthält. Die ersten Felder dienen primär der derzeitigen Kontrolle der Inhalte, und werden auch richtig beschrieben (1.Sub). Irgendwann habe ich realisiert, daß nach dem .execute() kein Code mehr ausgeführt wird, weil der Dialog den Fokus hat. So fülle ich auch die Felder im Vorfeld auf.
Ich habe ein Listenfeld, das noch befüllt werden muß, und da liegt der Haken - er macht es nicht. Auf .ListSource, wie auch auf .StringItemList kriege ich eine Fehlermeldung. Da dich der Inhalt der Liste abhängig von einem Optionsfeld ändern kann, habe ich den Aufruf in eine weitere Sub gepackt, die offensichtlich auch aufgerufen wird. Die Befehle, die das Listenfeld ansprechen, habe ich deaktiviert, um eine Fehlermeldung zu umgehen, und ich den Variableninhalt kontrollieren kann. Ergebnis: Das Optionsfeld wird richtig ausgelesen, und die Listeneinträge stehen auch in der Variable stListe als Text mit Komma getrennt zur Verfügung. Wenn ich aber versuche, diesen String als Listeneinträge festzulegen, kommt die Fehlermeldung. Alles, was ich in Tutorials und Anleitungen gefunden habe, erwies sich als ergebnislos.
Ebenso soll die 2. Sub bei "Statusänderung" des Optionsfeldes aufgerufen werden, was ebenfalls nicht passiert. Beide Subs und der Dialog stehen im Selben Modul.
Hat jemand einen Tip, wo der Denkfehler liegt ? Heißen Dank im Voraus.
Code: Alles auswählen
DIM iNam1 as Long
DIM oEvent as Object
DIM oDialog as Object
DIM oDlg as Object
DIM oDatenquelle as Object
DIM oVerbindung as Object
DIM oSQL_Anweisung as Object
DIM stSQL as String
DIM oResult as Object
Dim stListe as String
SUB DialogNamRefStart
DIM IaktName as Integer
DIM sAktMC as String
DIM saktName1 as String
DIM sAktName2 as String
oForm = thisComponent.drawpage.forms.getByName("NamenDetail")
iaktName = oForm.getByName("fmtNamID").getCurrentValue
oDatenquelle = thisDatabaseDocument.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
stSql = "SELECT ""NamID"",""NamMC"",""NamName1"",""NamName2"" FROM ""Namen"" WHERE ""NamID"" = '" & iaktName & "'"
oResult = oSQL_Anweisung.executeQuery(stSql)
oResult.next
sAktMC = oResult.getString(2)
sAktName1 = oResult.getString(3)
sAktName2 = oResult.getString(4)
DialogLibraries.LoadLibrary("Dialoge")
oDialog = createUnoDialog(DialogLibraries.Dialoge.NamenReferenz)
oDialog.getControl("NamensIDfeld").text = "" & iaktName & ""
oDialog.getControl("NamMCfeld").text = sAktMC
oDialog.getControl("Nam1feld").text = sAktName1
oDialog.getControl("Nam2feld").text = sAktName2
'oDialog.getControl("RefArtOpt").State = True
'oDialog.getControl("RefArtGOpt").State = False
RefArtListeAktualisieren
oDialog.Execute()
END SUB
SUB RefArtListeAktualisieren
DialogLibraries.LoadLibrary("Dialoge")
oDialog = createUnoDialog(DialogLibraries.Dialoge.NamenReferenz)
oDatenquelle = thisDatabaseDocument.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oDialog.GetControl("RefText").text = ""
If oDialog.GetControl("RefArtOpt").State = True then
oDialog.GetControl("RefText").text = "Referenz"
stSql(0) = "SELECT ""RefABez"",""RefAID"" FROM ""RefArt"""
Else
oDialog.GetControl("RefText").text = "Gegenreferenz"
stSql(0) = "SELECT ""RefAG"",""RefAID"" FROM ""RefArt"""
End if
'oDialog.GetControl("RefText").refresh
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
'stSql(0) = "SELECT ""RefABez"",""RefAID"" FROM ""RefArt"""
oResult = oSQL_Anweisung.executeQuery(stSql)
stListe = " "
while oResult.next
stListe = stListe & ","& oResult.getString(1)
wend
'oDialog.getControl("RefArtListe").ListSource = stListe
'oDialog.getControl("RefArtListe").refresh
END SUB
Gruß Daniel