🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
[gelöst] Filterergebnis in Formular ausgeben
[gelöst] Filterergebnis in Formular ausgeben
Hallo liebe Leute,
vorweg, ich bin absoluter Anfänger und es ist mein erster Versuch. Antworten also bitte für Doofe.
Es geht um eine Datenbank für ein kleines Übersetzungsbüro. Dort soll eine Formular entstehen, über das Auftragsdaten nach bestimmten Kriterien gesucht werden können.
Es besteht aus Listenfeldern, mit denen die Suchkriterien bestimmt werden können und einer Tabelle, in der die gefundenen Datensätze angezeigt werden sollen.
Die Suche versuche ich mit folgendem Makro zu organisieren, leider stehe ich im Moment völlig auf dem Schlauch und weiß einfach nicht, wie ich das Suchergebnis in der Formulartabelle anzeigen kann. Oder bin ich völlig auf dem Holzweg?
Den entsprechenden Teil der Datenbank habe ich angehängt.
Über Eure Hilfe würde ich mich sehr freuen.
Sub Auftrag_filtern
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
DIM oDoc AS OBJECT
DIM oForm1 AS OBJECT
DIM oForm2 AS OBJECT
DIM oSQL_Statement AS OBJECT 'das Objekt, das den SQL-Befehl ausführt
DIM sSql AS STRING 'Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT 'Ergebnis für executeQuery
DIM sWert_1 AS STRING
DIM iWert_2 AS INTEGER
DIM iWert_3 AS INTEGER
DIM iWert_4 AS INTEGER
DIM iWert_5 AS INTEGER
' Verbindung zur Datenbank herstellen
oDatasource = thisDatabaseDocument.CurrentController
IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
oConnection = oDatasource.ActiveConnection()
' Formulare ansprechen
oDoc = ThisComponent
oForm1 = oDoc.drawpage.forms.getByName("Auftragsfilter")
oForm2 = oDoc.drawpage.forms.getByName("Anzeige")
' Filterbedinungen holen
oForm1.updateRow()
sWert_1 = oForm1.getString(2)
iWert_2 = oForm1.getInt(3)
iWert_3 = oForm1.getInt(4)
iWert_4 = oForm1.getInt(5)
iWert_5 = oForm1.getInt(6)
' print sWert_1
' print iWert_2
' print iWert_3
' print iWert_4
' print iWert_5
' SQL-Kommunikationskanal aufbauen
oSQL_Statement = oConnection.createStatement()
' SQL-Abfrage ausführen
' Später soll die Abfrage nach diesem Muster zusammengestellt werden
sSQL = "SELECT ""Auftrag"".* FROM ""Auftrag"" WHERE ""Auftrag"".""Bezeichnung-ID"" = '" + iWert_2 + "'"
' print sSQL
oResult = oSQL_Statement.executeQuery(sSQL)
' Wie kann ich das Ergebnis der Abfrage in "Anzeige" ausgeben????
End Sub
vorweg, ich bin absoluter Anfänger und es ist mein erster Versuch. Antworten also bitte für Doofe.
Es geht um eine Datenbank für ein kleines Übersetzungsbüro. Dort soll eine Formular entstehen, über das Auftragsdaten nach bestimmten Kriterien gesucht werden können.
Es besteht aus Listenfeldern, mit denen die Suchkriterien bestimmt werden können und einer Tabelle, in der die gefundenen Datensätze angezeigt werden sollen.
Die Suche versuche ich mit folgendem Makro zu organisieren, leider stehe ich im Moment völlig auf dem Schlauch und weiß einfach nicht, wie ich das Suchergebnis in der Formulartabelle anzeigen kann. Oder bin ich völlig auf dem Holzweg?
Den entsprechenden Teil der Datenbank habe ich angehängt.
Über Eure Hilfe würde ich mich sehr freuen.
Sub Auftrag_filtern
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
DIM oDoc AS OBJECT
DIM oForm1 AS OBJECT
DIM oForm2 AS OBJECT
DIM oSQL_Statement AS OBJECT 'das Objekt, das den SQL-Befehl ausführt
DIM sSql AS STRING 'Text des eigentlichen SQL-Befehls
DIM oResult AS OBJECT 'Ergebnis für executeQuery
DIM sWert_1 AS STRING
DIM iWert_2 AS INTEGER
DIM iWert_3 AS INTEGER
DIM iWert_4 AS INTEGER
DIM iWert_5 AS INTEGER
' Verbindung zur Datenbank herstellen
oDatasource = thisDatabaseDocument.CurrentController
IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
oConnection = oDatasource.ActiveConnection()
' Formulare ansprechen
oDoc = ThisComponent
oForm1 = oDoc.drawpage.forms.getByName("Auftragsfilter")
oForm2 = oDoc.drawpage.forms.getByName("Anzeige")
' Filterbedinungen holen
oForm1.updateRow()
sWert_1 = oForm1.getString(2)
iWert_2 = oForm1.getInt(3)
iWert_3 = oForm1.getInt(4)
iWert_4 = oForm1.getInt(5)
iWert_5 = oForm1.getInt(6)
' print sWert_1
' print iWert_2
' print iWert_3
' print iWert_4
' print iWert_5
' SQL-Kommunikationskanal aufbauen
oSQL_Statement = oConnection.createStatement()
' SQL-Abfrage ausführen
' Später soll die Abfrage nach diesem Muster zusammengestellt werden
sSQL = "SELECT ""Auftrag"".* FROM ""Auftrag"" WHERE ""Auftrag"".""Bezeichnung-ID"" = '" + iWert_2 + "'"
' print sSQL
oResult = oSQL_Statement.executeQuery(sSQL)
' Wie kann ich das Ergebnis der Abfrage in "Anzeige" ausgeben????
End Sub
- Dateianhänge
-
- Test.zip
- (52.19 KiB) 182-mal heruntergeladen
Zuletzt geändert von NilsJ am Fr 3. Okt 2014, 07:55, insgesamt 1-mal geändert.
Re: Filterergebnis in Formular ausgeben
Dann beachte bitte bei deinen weiteren Versuchen auf dem Weg zum Experten,NilsJ hat geschrieben:ich bin absoluter Anfänger und es ist mein erster Versuch.
- dass die alle Fragen und Beiträge zur „Programmiererei“ ihre Heimat im Bereich LibreOffice Programmierung haben
- und dass mit Hilfe der von der Forums-Software bereitgestellten [code]…[/code]-Tags Programmtexte übersichtlich(er) in den Fließtext eingebettet werden können.
Dein Quelltext als Beispiel:Code: Alles auswählen
Sub Auftrag_filtern DIM oDatasource AS OBJECT DIM oConnection AS OBJECT DIM oDoc AS OBJECT DIM oForm1 AS OBJECT DIM oForm2 AS OBJECT DIM oSQL_Statement AS OBJECT 'das Objekt, das den SQL-Befehl ausführt DIM sSql AS STRING 'Text des eigentlichen SQL-Befehls DIM oResult AS OBJECT 'Ergebnis für executeQuery DIM sWert_1 AS STRING DIM iWert_2 AS INTEGER DIM iWert_3 AS INTEGER DIM iWert_4 AS INTEGER DIM iWert_5 AS INTEGER ' Verbindung zur Datenbank herstellen oDatasource = thisDatabaseDocument.CurrentController IF NOT (oDatasource.isConnected()) THEN oDatasource.connect() oConnection = oDatasource.ActiveConnection() ' Formulare ansprechen oDoc = ThisComponent oForm1 = oDoc.drawpage.forms.getByName("Auftragsfilter") oForm2 = oDoc.drawpage.forms.getByName("Anzeige") ' Filterbedinungen holen oForm1.updateRow() sWert_1 = oForm1.getString(2) iWert_2 = oForm1.getInt(3) iWert_3 = oForm1.getInt(4) iWert_4 = oForm1.getInt(5) iWert_5 = oForm1.getInt(6) ' print sWert_1 ' print iWert_2 ' print iWert_3 ' print iWert_4 ' print iWert_5 ' SQL-Kommunikationskanal aufbauen oSQL_Statement = oConnection.createStatement() ' SQL-Abfrage ausführen ' Später soll die Abfrage nach diesem Muster zusammengestellt werden sSQL = "SELECT ""Auftrag"".* FROM ""Auftrag"" WHERE ""Auftrag"".""Bezeichnung-ID"" = '" + iWert_2 + "'" ' print sSQL oResult = oSQL_Statement.executeQuery(sSQL) ' Wie kann ich das Ergebnis der Abfrage in "Anzeige" ausgeben???? End Sub
lorbass
Re: Filterergebnis in Formular ausgeben
Hallo NilsJ,
wenn Du wirklich Anfänger bist - warum nutzt Du dann zum Filtern Makros? Das geht ohne große Probleme direkt über ein Formular. Schau Dir einmal die Beispieldatenbanken zum aktuellen Handbuch an - da ist die Filterung von Daten ohne Makros auch ausführlich beschrieben. Die Filterung mit Makrounterstützung mache ich in den nächsten Tagen (für die nächste Handbuchversion) fertig. Auch da ist der Code aber deutlich einfacher als das, was Du da zusammen schreibst.
Gruß
Robert
wenn Du wirklich Anfänger bist - warum nutzt Du dann zum Filtern Makros? Das geht ohne große Probleme direkt über ein Formular. Schau Dir einmal die Beispieldatenbanken zum aktuellen Handbuch an - da ist die Filterung von Daten ohne Makros auch ausführlich beschrieben. Die Filterung mit Makrounterstützung mache ich in den nächsten Tagen (für die nächste Handbuchversion) fertig. Auch da ist der Code aber deutlich einfacher als das, was Du da zusammen schreibst.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Filterergebnis in Formular ausgeben
Hallo Robert,
die Datenbank ist für meine Frau gedacht, die sich nicht mit der Datenbankstruktur oder komplizierten Filtermechanismen auseinandersetzen mag. Ziel meiner Bemühungen ist es, ihr eine auf ihre speziellen Anwendungen zugeschnittene Oberfläche bereit zu stellen. Das Formular "Auftragsfilter" wäre ihr schon sehr angenehm.
Mir erschien die Filterung über ein Makro auch gar nicht so kompliziert und es war ja auch bis zu diesem Punkt gut verständlich in dem Handbuch beschrieben. Die SQL-Abfrage entsprechend zusammenzustellen traue ich mir damit schon zu. Ich dachte aber, es fehle jetzt nur noch ein kleiner Schritt zur Anzeige des Suchergebnisses, eine Einstellung beim Formular oder etwas derartiges.
Viele Grüße
Nils
#lorbass
Tut mir leid, wenn ich unwissend den falschen Bereich gewählt und die code-Tags vergessen habe. Versuche ich beim nächsten mal besser zu machen.
Gruß
Nils
die Datenbank ist für meine Frau gedacht, die sich nicht mit der Datenbankstruktur oder komplizierten Filtermechanismen auseinandersetzen mag. Ziel meiner Bemühungen ist es, ihr eine auf ihre speziellen Anwendungen zugeschnittene Oberfläche bereit zu stellen. Das Formular "Auftragsfilter" wäre ihr schon sehr angenehm.
Mir erschien die Filterung über ein Makro auch gar nicht so kompliziert und es war ja auch bis zu diesem Punkt gut verständlich in dem Handbuch beschrieben. Die SQL-Abfrage entsprechend zusammenzustellen traue ich mir damit schon zu. Ich dachte aber, es fehle jetzt nur noch ein kleiner Schritt zur Anzeige des Suchergebnisses, eine Einstellung beim Formular oder etwas derartiges.
Viele Grüße
Nils
#lorbass
Tut mir leid, wenn ich unwissend den falschen Bereich gewählt und die code-Tags vergessen habe. Versuche ich beim nächsten mal besser zu machen.
Gruß
Nils
Re: Filterergebnis in Formular ausgeben
Hi,
anbei eine Lösung ohne Makro.
Es wird eine Parameter-Abfrage mit den gewählten Werten der Tabelle Filter gefüllt. Mein Lieblingsfiltermethode, siehe auch Videotutorials 3+5.
Gruß R
anbei eine Lösung ohne Makro.
Es wird eine Parameter-Abfrage mit den gewählten Werten der Tabelle Filter gefüllt. Mein Lieblingsfiltermethode, siehe auch Videotutorials 3+5.
Gruß R
- Dateianhänge
-
- Test.zip
- (49.69 KiB) 211-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Filterergebnis in Formular ausgeben
Hallo,
genauso ist es super. Ich hatte immer gedacht, dass man dafür ein Makro braucht.
Dieses Forum ist wirklich hervorragend. In kurzer Zeit bekommt man fachkundige Unterstützung. Das macht richtig Spaß!!!
Vielen Dank für Deine Mühe.
Nils
genauso ist es super. Ich hatte immer gedacht, dass man dafür ein Makro braucht.
Dieses Forum ist wirklich hervorragend. In kurzer Zeit bekommt man fachkundige Unterstützung. Das macht richtig Spaß!!!
Vielen Dank für Deine Mühe.
Nils
Re: Filterergebnis in Formular ausgeben
Na, dann könntest du doch deinen ersten Beitrag editieren und ein [gelöst] vor die Überschrift schreiben.
Gruß R
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.