Hallo,
ein kleines Problem für einen Könner ein großes für mich:
Ich habe unter liebevoller Mithilfe endlich in einem Dialog eine Listbox erstellt und diese mit daten aus meiner datenbank gefüllt.
Jetzt kann ich einen Eintrag anklicken, der wird dann blau unterlegt.
Nun möchte ich diese Auswahl auslesen und dann mit einem Makro weiterverarbeiten.
Leider schlagen bislang alle Versuch fehl, dies zu programmieren, auch die in den Tools hinterlegten Beispiele.
Außer Fehlermeldungen nicht gewesen.
Hier der Auszug aus dem Ende des Code: Dies füllt die Listbox wunderbar. Aber wie bekomme ich jetzt Zugriff auf einen ausgewählten Eintrag, und reicht zum auswählen einfach ein Click auf einen Eintrag aus, oder muss dieser noch mit Code unterlegt werden?
dim strEintraege(iAnzahl)
for i = 1 to iAnzahl
strEintraege(i-1) = ResultSet.GetString(1)
ResultSet.next
next
oListBox.additems(strEintraege(),0)
oDialog1.Execute()
wäre sehr für einen Hinweis verbunden
Markierten Eintrag in Listbox (Dialog) auslesen
Moderator: Moderatoren
Re: Markierten Eintrag in Listbox (Dialog) auslesen
Hallo Wosp,
hast Du den Dialog oberhalb des Programmes definiert?
Das ist mal Voraussetzung, etwa so:Grund: Du brauchst ein zweites Makro zum Auslesen des Wertes. Wenn Du den Dialog oberhalb der Sub definierst, wird er an das zweite Makro übergeben.
Ich mache es meist so, dass ich unterhalb der Listbox noch einen CommandButton "OK" definiere: Diesem ordne ich dann das zweite Makro unter "Eigenschaften/Ereignisse/Aktion ausführen" zu. Also erst in der Listbox Eintrag auswählen, dann mit OK bestätigen. Jetzt brauchst Du noch den Namen der Listbox, findest Du unter "Eigenschaften/Allgemein/Name", ich nehme mal folgenden Namen an: "lst_Name".
Das zweite Makro sieht dann etwa so aus:oGewaehlteZeile ist also der Wert, mit dem Du nun weitermachen kannst.
G R
hast Du den Dialog oberhalb des Programmes definiert?
Das ist mal Voraussetzung, etwa so:
Code: Alles auswählen
Dim oDialog1 as Object
Sub ...
Ich mache es meist so, dass ich unterhalb der Listbox noch einen CommandButton "OK" definiere: Diesem ordne ich dann das zweite Makro unter "Eigenschaften/Ereignisse/Aktion ausführen" zu. Also erst in der Listbox Eintrag auswählen, dann mit OK bestätigen. Jetzt brauchst Du noch den Namen der Listbox, findest Du unter "Eigenschaften/Allgemein/Name", ich nehme mal folgenden Namen an: "lst_Name".
Das zweite Makro sieht dann etwa so aus:
Code: Alles auswählen
Sub Auslesen
oControl=oDialog1.GetControl("lst_Name")
oGewaehlteZeile=oControl.Text
oDialog1.endExecute()
msgbox "Du hast "+oGewaehlteZeile+" gewählt"
end Sub
G R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Markierten Eintrag in Listbox (Dialog) auslesen
Hallo Gr
Danke erstmal für die Antwort...
Leider taucht immer wieder dasselbe Problem auf. Wenn ich über den Commandobutton ins 2.Sub gehe erscheint die Fehlermeldung, "Varible nicht definiert."
Der Gesamte Code sieht so aus und funktioniert auch recht gut, nur das auslesen geht überhaupt nicht.
Die Hauptroutine heißt "fuenfter Versuch," der Button ruft die den sub "Antwort" auf, in den ich Deinen Code eingefügt habe. Ich weiß auch eigentlich nicht ob ich das "getcontroll" richtig mit dem Namen "Listbox1" ausgefüllt habe:
Dim oDialog1 as Object ' Dein Vorschlag
Sub Main
end sub
Sub fuenfterVersuch ' hier gehts los!
Dim nextFile as string
DialogLibraries.LoadLibrary( "Standard" )
oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
oListBox = oDialog1.getControl("ListBox1")
'dim strEintraege(iAnzahl)
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Feldinhalt")
Connection = DataSource.GetConnection("","")
Statement = Connection.createStatement()
Statement.ResultSetType = 1004 '= com.sun.star.sdbc.ResultSetType.SCROLL_INSENSITIVE
ResultSet = Statement.executeQuery("SELECT distinct Diagnose as Diagnose FROM Anamnese order by Diagnose ASC;")
Index=resultset.findcolumn("Diagnose")
'Anzahl suchen
ResultSet.Last
iAnzahl=ResultSet.GetRow
'MsgBox iAnzahl
if iAnzahl <= 0 then
end
end if
ResultSet.First
dim strEintraege(iAnzahl)
for i = 1 to iAnzahl
strEintraege(i-1) = ResultSet.GetString(1)
ResultSet.next
next
oListBox.additems(strEintraege(),0)
oDialog1.Execute()
Resultset.close() ' ob das wichtig ist weiß ich nicht wurde nachher eingefügt
Statement.close() ' ob das wichtig ist weiß ich nicht wurde nachher eingefügt
End Sub
Sub Antwort ' Dahin springt der Button
oControl=oDialog1.GetControl("Listbox1")
oGewaehlteZeile=oControl.Text
oDialog1.endExecute()
msgbox "Du hast "+oGewaehlteZeile+" gewählt"
end Sub
Danke erstmal für die Antwort...
Leider taucht immer wieder dasselbe Problem auf. Wenn ich über den Commandobutton ins 2.Sub gehe erscheint die Fehlermeldung, "Varible nicht definiert."
Der Gesamte Code sieht so aus und funktioniert auch recht gut, nur das auslesen geht überhaupt nicht.
Die Hauptroutine heißt "fuenfter Versuch," der Button ruft die den sub "Antwort" auf, in den ich Deinen Code eingefügt habe. Ich weiß auch eigentlich nicht ob ich das "getcontroll" richtig mit dem Namen "Listbox1" ausgefüllt habe:
Dim oDialog1 as Object ' Dein Vorschlag
Sub Main
end sub
Sub fuenfterVersuch ' hier gehts los!
Dim nextFile as string
DialogLibraries.LoadLibrary( "Standard" )
oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
oListBox = oDialog1.getControl("ListBox1")
'dim strEintraege(iAnzahl)
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Feldinhalt")
Connection = DataSource.GetConnection("","")
Statement = Connection.createStatement()
Statement.ResultSetType = 1004 '= com.sun.star.sdbc.ResultSetType.SCROLL_INSENSITIVE
ResultSet = Statement.executeQuery("SELECT distinct Diagnose as Diagnose FROM Anamnese order by Diagnose ASC;")
Index=resultset.findcolumn("Diagnose")
'Anzahl suchen
ResultSet.Last
iAnzahl=ResultSet.GetRow
'MsgBox iAnzahl
if iAnzahl <= 0 then
end
end if
ResultSet.First
dim strEintraege(iAnzahl)
for i = 1 to iAnzahl
strEintraege(i-1) = ResultSet.GetString(1)
ResultSet.next
next
oListBox.additems(strEintraege(),0)
oDialog1.Execute()
Resultset.close() ' ob das wichtig ist weiß ich nicht wurde nachher eingefügt
Statement.close() ' ob das wichtig ist weiß ich nicht wurde nachher eingefügt
End Sub
Sub Antwort ' Dahin springt der Button
oControl=oDialog1.GetControl("Listbox1")
oGewaehlteZeile=oControl.Text
oDialog1.endExecute()
msgbox "Du hast "+oGewaehlteZeile+" gewählt"
end Sub
Re: Markierten Eintrag in Listbox (Dialog) auslesen
Noch ein Zusatz: ich habe alles gespeichert und nochmals geöffnet, den Namen Listbox1 nochmals eingegeben aber danach kam eine andere Fehlermeldung:
Eigenschaft oder Methode nicht gefunden : .Text
bei oControl.Text.
Eigenschaft oder Methode nicht gefunden : .Text
bei oControl.Text.
Re: Markierten Eintrag in Listbox (Dialog) auslesen
Sorry, mein Fehler.
Ich habe gerade festgestellt, dass ich nur Kombinationsfelder verwende.
Beim Listenfeld nimmst Du ".SelectedItem" anstelle ".Text".
Das Ergebnis ist ein String.
G R
Ich habe gerade festgestellt, dass ich nur Kombinationsfelder verwende.
Beim Listenfeld nimmst Du ".SelectedItem" anstelle ".Text".
Das Ergebnis ist ein String.
G R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Markierten Eintrag in Listbox (Dialog) auslesen
Dank und nochmals Dank -- es funzt.. 

Re: Markierten Eintrag in Listbox (Dialog) auslesen
Hallo wosp
Bitte nächstes mal nur in einem Forum eintragen, nicht OO und LO!
Gruss
Heinz
Bitte nächstes mal nur in einem Forum eintragen, nicht OO und LO!
Gruss
Heinz