Listbox in Formular befüllen durch Makro

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

sg1985
***
Beiträge: 89
Registriert: Mo, 07.07.2008 15:22

Listbox in Formular befüllen durch Makro

Beitrag von sg1985 »

Hallo,

trotz einiger Hinweise, die ich im Forum gefunden habe, komme ich einfach nicht weiter und hoffe nun auf Hilfe :-)
Hier im Forum findet man hauptsächlich Makros, welche die Listbox von einem Dialog befüllen, ich habe aber eine Listbox in einem
calc Formular.

Wie muss ich nun vorgehen, um diese durch ein Makro per SQL Abfrage zu befüllen? (Bisher habe ich lediglich eine calc Datei offen und dort über
die Symbolleiste der Formular Steuerelemente eine Listbox eingefügt und ihr einen Namen gegeben).

Wäre für jegliche Hilfe sehr dankbar,
lg
AhQ
*******
Beiträge: 1096
Registriert: Fr, 15.06.2007 11:03
Wohnort: Regensburg
Kontaktdaten:

Re: Listbox in Formular befüllen durch Makro

Beitrag von AhQ »

Hallo,

wo ist denn die Quelle für Deine Listbox? Wenn die irgendwie in Dein Calc-Dokument verlegt werden kann, dann brauchst Du kein Makro.

Ich würde insgesamt eher mit Daten->Gültigkeit arbeiten. Das wurde im Forum schon oft erklärt, z.B. hier. Wenn Du bißchen suchst, findest Du aber bestimmt noch mehr. Mit Gültigkeit bekommst Du ein Drop-Down-Menü und Du kannst diesem relativ leicht sagen, woher die Einträge kommen sollen. Dafür reservier ich mir immer einen abgelegenen Bereich auf einem Tabellenblatt. Dann muß nur noch gesteuert werden, welche Einträge da erscheinen sollen und Du hast im Grunde eine wunderbare Auswahlliste.

Die entscheidende Frage ist jetzt also, wo stehen die Daten, die in die Listbox (oder in Daten->Gültigkeit) aufgenommen werden sollen? Schon irgendwo in dieser Datei? Oder in irgendeiner Datenbankanwendung, sodaß sie erst importiert werden müssen? Oder ganz anders?

Viele Grüße
AhQ
sg1985
***
Beiträge: 89
Registriert: Mo, 07.07.2008 15:22

Re: Listbox in Formular befüllen durch Makro

Beitrag von sg1985 »

hi,

also meine Daten für die Listbox befinden sich in einer Datenbank, die ich als Datenquelle in Open Office registriert habe.

Ich habe momentan folgendes Makro das mir eigentlich die einzige Listbox im 1. Tabellenblatt mit dem Namen "ListBox" belegen sollte,
aber nicht mal das funktioniert. Ich bekomm zwar keinen Fehler, wenn ich das Makro ausführe, aber es passiert einfach nichts (die Listbox bleibt leer):

Code: Alles auswählen

sub ListBox_fuellen
  Dim oListBox as Object, aListe(), oForm as Object
  oForm = thisComponent.sheets(0).Drawpage.Forms(0)
  oListBox = oForm.getByName("ListBox")
  aListe = Array("Januar", "Februar", "März", "April", "Mai", _
                "Juni", "Juli", "August", "September", "Oktober", _
                 "November", "Dezember")
   oListBox.StringItemList = aListe()
end sub
Eine Idee was ich da falsch mache?
sg1985
***
Beiträge: 89
Registriert: Mo, 07.07.2008 15:22

Re: Listbox in Formular befüllen durch Makro

Beitrag von sg1985 »

ich hab noch vergessen zu schreiben, dass ich schon gerne mit Makros arbeiten würde, da ich die Auswahl der Listbox sowieso mit einem Makro weiter bearbeiten
muss (ich brauche das selektierte Element der Listbox als Paramter für eine weitere SQL Abfrage im Makro).

lg
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Listbox in Formular befüllen durch Makro

Beitrag von Stephan »

aber es passiert einfach nichts (die Listbox bleibt leer):
schwer vorstellbar, denn der aufgeführte Code ist in Ordnung.

Wie hast Du denn geprüft das nichts passiert und die Listbox leer bleibt?

Rein hypotetisch kann ich mir natürlich den Fall überlegen das die Listbox im Normalmodus keine einträge zeigt wenn sie gleichzeitig mit einer Datenquelle vebunden ist, aber natürlich passiert dann was durch das Makro und natürlich sind die Werte auch eingtragen und im Entwurfsmodus der Listbox in deren Eigenschaften sichtbar.




Gruß
Stephan
sg1985
***
Beiträge: 89
Registriert: Mo, 07.07.2008 15:22

Re: Listbox in Formular befüllen durch Makro

Beitrag von sg1985 »

da hast du vollkommen Recht, wenn ich im Entwurfsmodus auf die Eigenschaften der Listbox gehe, sehe ich die Einträge habe ich gerade festgestellt :)

allerdings lässt sich die Listbox eben nicht aufklappen, bzw. sehe ich dort keine Einträge, muss ich da in einen anderen Modus wechseln um die Einträge zu sehen?
sg1985
***
Beiträge: 89
Registriert: Mo, 07.07.2008 15:22

Re: Listbox in Formular befüllen durch Makro

Beitrag von sg1985 »

das mit der Ansicht hat sich erledigt, ich sehe nun die Einträge in meiner Listbox.

Allerdings waren das ja nur statisch rein geschriebene Einträge durch das Makro... das Makro hat nun bereits eine Verbindung zu Datenbank
und setzt den Befehl "select names from staff" ab, wie bekomm ich das Ergebnis dieser Abfrage nun in meine vorhandene Listbox im Formular?

Danke und lg
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Listbox in Formular befüllen durch Makro

Beitrag von MikeRo »

sg1985 hat geschrieben:das mit der Ansicht hat sich erledigt, ich sehe nun die Einträge in meiner Listbox.

Allerdings waren das ja nur statisch rein geschriebene Einträge durch das Makro... das Makro hat nun bereits eine Verbindung zu Datenbank
und setzt den Befehl "select names from staff" ab, wie bekomm ich das Ergebnis dieser Abfrage nun in meine vorhandene Listbox im Formular?

Danke und lg
Hier hast du meine Lösung zu dem Problem.:

Call DB, da wird nur die Datenbankverbindung aufgebaut.
Es ist aber eine Listbox in einem Dialog ;-)

Code: Alles auswählen

Sub ListeFuellen

		Call DB
		oStatement = oCon.createStatement()
		oListenAbfrage = oStatement.executeQuery("SELECT ""bezeichnung"" FROM ""public"".""stadtklasse"" ORDER BY ""sortier"" ASC")
       	aListe = array()
	    x = 0
        If not isNull(oListenAbfrage) Then
			 Do while oListenAbfrage.Next
			 ReDim Preserve aListe(x)
             aListe(x) = oListenAbfrage.getString(1)
          x = x + 1
        Loop
        End IF

    oListBox =oDialog.getControl("ListBox1")
	oListBox.removeItems(0, oListBox.getItemCount())             
	oListBox.addItems(aListe, 0)

End Sub
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Antworten