combobox in sheet per makro füllen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: combobox in sheet per makro füllen

Beitrag von komma4 »

OOo Version?
Ist das wirklich eine Combobox?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
peterschleif
**
Beiträge: 34
Registriert: Fr, 06.11.2009 05:49

Re: combobox in sheet per makro füllen

Beitrag von peterschleif »

Versuch es doch mal so:

Code: Alles auswählen

    oComboBox = Doc.CurrentController.getControl(Form.getByName("Name_combobox"))
Peter
hoffie
Beiträge: 6
Registriert: Mo, 06.12.2010 15:29

Re: combobox in sheet per makro füllen

Beitrag von hoffie »

Hallo,
würde gerne die Frage von hvghzgu5 moch mal aufgreifen. Bei mir liegt, denke ich dass gleiche Problem vor. Bei dem Versuch eine List oder Combobox per Makro zu befüllen bekomme ich immer die Fehelrmeldung: "Methode oder Eigenschaft nicht gefunden: removeItems." Mein verwendeter Code:

Code: Alles auswählen

Sub FL_Fuellen
Dim oDoc as Object
Dim oDocCtl as Object
Dim oSheet as Object
Dim oDraw as Object
Dim oForm as Object
Dim oElement as Object
Dim oElementView as Object
Dim s

oDoc = thisComponent
oDocCtl = oDoc.getCurrentController()
oSheet = oDoc.sheets.GetByName ("Weight 2")
oDraw = oSheet.drawpage
oForm = oDraw.getForms.GetByName("Formular1")
oElement = oForm.getByName("ComboBox1")
oElementView = oDocCtl.getControl(oElement)
'MsgBox oElementView.dbg_properties
oCombobox1 = oElement
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Neue Datenbank5.1")
Connection = DataSource.GetConnection("","")
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("SELECT DISTINCT FR FROM Weight2")
i=0
If not isNull (ResultSet) then
Do while ResultSet.Next 
i= i+1
s  = Resultset.getString(1) '&'Chr(13)
Msgbox s
oComboBox1 = oElement
oComboBox1.removeItems(i-1, 5)
'oComboBox1.removeItems(i-1, oComboBox1.getItemCount())  'schränkt ein wie viele gespeichert werden          
oComboBox1.addItem(s,-1) ' beeinflusst ab was für einem Datensatz gespeichert wird
Loop
end if
end sub


Generell möchte ich einzelne Werte aus Tabellen einer Datenbank ausgeben. Hierzu wird zunächst mit Hilfe eines Dialoges ein Parameter bestimmt, der dann später bei einer SQL Abfrage in der WHERE Bedingung verwendet werden soll. Deshalb ist es mir nur möglich die Boxen mittels Makro zu füllen und nicht die "normale" Verbingund über deren eigenschaften herzustellen, da ich dort nicht weiß wie eine Variable, die ich aus einem Dialog ausgelsen habe, in den SQL Befehl einbauen soll. Falls das irgendwie funktioniert wäre das für mich auch sehr hilfreich. Meine Befehl lautet heirzu lautet bis jetzt:
SELECT `FL`FROM `mysql`.`weight` WHERE `ID1` = 2
Ich müsste also 2 durch die Auswahl aus dem Dialog ersetzten........????

Eigentlich wäre mir aber die Sache mit dem addItem und removeItem zunächst wichitger :)

Ich benutzte OO3.2 unter windows 7. Die Verbingungen zu Datenbank und dieAnsteuerung von Boxen in meinem dialog funktionieren einwandfrei!
Vielen Dank schon mal für euere Hilfe
Gruß hoffie
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: combobox in sheet per makro füllen

Beitrag von DPunch »

Aloha
hoffie hat geschrieben:Eigentlich wäre mir aber die Sache mit dem addItem und removeItem zunächst wichitger :)

Code: Alles auswählen

(...)
Do while ResultSet.Next
i= i+1
s  = Resultset.getString(1) '&'Chr(13)
Msgbox s
oComboBox1 = oElementView '<---------------------------!
oComboBox1.removeItems(i-1, 5)
'oComboBox1.removeItems(i-1, oComboBox1.getItemCount())  'schränkt ein wie viele gespeichert werden         
oComboBox1.addItem(s,-1) ' beeinflusst ab was für einem Datensatz gespeichert wird
Loop
end if
end sub
Wenn Du die Combobox über eine Datenbankanbindung speisst, kannst Du den Inhalt folgendermaßen festlegen (angenommen, x ist die ausgelesene Variable aus dem Dialog)

Code: Alles auswählen

oDoc = thisComponent
oDocCtl = oDoc.getCurrentController()
oSheet = oDoc.sheets.GetByName ("Weight 2")
oDraw = oSheet.drawpage
oForm = oDraw.getForms.GetByName("Formular1")
oElement = oForm.getByName("ComboBox1")
oElement.ListSource = "SELECT `FL`FROM `mysql`.`weight` WHERE `ID1` = " & x
Antworten