🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> 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

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
NilsJ
Beiträge: 9
Registriert: So 27. Jul 2014, 14:48

[gelöst] Filterergebnis in Formular ausgeben

Beitrag von NilsJ » Sa 27. Sep 2014, 12:00

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
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.

Benutzeravatar
lorbass
* LO-Experte *
Beiträge: 627
Registriert: Mo 25. Apr 2011, 18:17

Re: Filterergebnis in Formular ausgeben

Beitrag von lorbass » Sa 27. Sep 2014, 17:44

NilsJ hat geschrieben:ich bin absoluter Anfänger und es ist mein erster Versuch.
Dann beachte bitte bei deinen weiteren Versuchen auf dem Weg zum Experten,
  1. dass die alle Fragen und Beiträge zur „Programmiererei“ ihre Heimat im Bereich LibreOffice Programmierung haben
  2. 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
Gruß
lorbass

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Filterergebnis in Formular ausgeben

Beitrag von RobertG » Sa 27. Sep 2014, 18:22

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
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

NilsJ
Beiträge: 9
Registriert: So 27. Jul 2014, 14:48

Re: Filterergebnis in Formular ausgeben

Beitrag von NilsJ » So 28. Sep 2014, 14:06

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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Filterergebnis in Formular ausgeben

Beitrag von F3K Total » So 28. Sep 2014, 17:36

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
Dateianhänge
Test.zip
(49.69 KiB) 211-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

NilsJ
Beiträge: 9
Registriert: So 27. Jul 2014, 14:48

Re: Filterergebnis in Formular ausgeben

Beitrag von NilsJ » So 28. Sep 2014, 19:51

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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Filterergebnis in Formular ausgeben

Beitrag von F3K Total » Mo 29. Sep 2014, 06:40

Na, dann könntest du doch deinen ersten Beitrag editieren und ein [gelöst] vor die Überschrift schreiben.
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.



Antworten