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

Filterbedingung mit Makro in den Bericht schreiben

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
jertl
Beiträge: 5
Registriert: So 9. Feb 2014, 15:05

Filterbedingung mit Makro in den Bericht schreiben

Beitrag von jertl » So 9. Feb 2014, 15:14

Hallo an alle,

ich versuche in den Filter eines Berichtes mit einem Makro eine Bedingung z.B. "Ort_Tab"."Ort" = "Büro" zu schreiben.
Der Bericht wird von einem Formular aus aufgerufen. Aus einer Kombobox des Formulares wird der Kriteriumswert z.B. Büro entnommen und soll nun in den Filter des Berichts gespeichert werden.

Die Methode Filter des Objektes oReport existiert leider nicht.

Code: Alles auswählen

Sub Filter_schreiben_Bericht

dim oForm as object
dim oReport as object
dim oComboBox as object
dim sFilterstring As String

  oForm = thisComponent.drawpage.forms.getByName("Fehler_Bericht_Frm") 'Formular wird oForm zugewiesen
  oComboBox = oForm.getByName("Ort_Kbf")                               'Combobox wird oComboBox zugewiesen
 
  sFilterstring = oComboBox.Text                                       'Text aus ComboBox wird sFilterstring zugewiesen
 	ThisDatabaseDocument.FormDocuments.getByName( "Fehler_Bericht_Frm" ).close 'Formular wird geschlossen
   print(sFilterstring)     ' Ausgabe: Büro                                 'Test ob der richtige Text ausgewählt wurde
    ThisDatabaseDocument.ReportDocuments.getByName("Abfrage_Fehler_Spaltenweise_Ber").open ' Bericht wird geöffnet
    
   oReport =ThisDatabaseDocument.ReportDocuments.getByName("Abfrage_Fehler_Spaltenweise_Ber") ' Zuweisung an oReport
   
   oReport.filter="Ort"" LIKE '" & sFilterstring & "'"  
   'Im Filter des Berichts soll dann z.B. '( "Ort_Tab"."Ort" = "Büro") stehen
   oReport.reload
  
End Sub
Kann mir wer bitte weiterhelfen, wie das ohne SQL funktionieren könnte?

jertl

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

Re: Filterbedingung mit Makro in den Bericht schreiben

Beitrag von RobertG » So 9. Feb 2014, 15:58

Hallo jertel,

das Filtern von Berichten geht auf zweierlei Art:
Parameterabfrage als Grundlage - Du gibst den Parameter also beim Aufruf des Berichtes händisch ein.
Abfrage, die aus einer Filtertabelle einen Wert ausliest - Du gibst einen Wert über ein Formular in eine einzeilige Tabelle ein, die neben einem Primärschlüssel (Ja/Nein-Feld) noch ein Textfeld enthält, das den Text "Büro" speichern kann.
Berichte lasse ich am liebsten von einer Ansicht aus starten. Dann kann der Report-Builder ohne Murren die SQL-Code-Erkennung angestellt lassen, sortiert auch brav nach seinen Voreinstellungen usw.
Die Ansicht wird genau wie die Abfragen gefüllt ...
Du versuchst übrigens, einen bereits geöffneten Bericht zu ändern und neu zu laden. Änderungen lassen sich aber nur an einem Bericht durchführen, wenn er editiert wird.
Der Report-Builder ist eine Erweiterung. Das Ganze wird von Base aus nur gestartet. Es gibt die Eigenschaften *.filter und *.reload nicht.
Wenn Du häufiger mit Makros arbeitest, dann wäre es vielleicht günstig, wenn Du Dir Xray installierst. Damit kannst Du sämtliche Befehlsmöglichkeiten auslesen, die Dir Base bietet.

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

jertl
Beiträge: 5
Registriert: So 9. Feb 2014, 15:05

Re: Filterbedingung mit Makro in den Bericht schreiben

Beitrag von jertl » Mo 10. Feb 2014, 12:23

RobertG hat geschrieben:Hallo jertel,

das Filtern von Berichten geht auf zweierlei Art:
Parameterabfrage als Grundlage - Du gibst den Parameter also beim Aufruf des Berichtes händisch ein.
Abfrage, die aus einer Filtertabelle einen Wert ausliest - Du gibst einen Wert über ein Formular in eine einzeilige Tabelle ein, die neben einem Primärschlüssel (Ja/Nein-Feld) noch ein Textfeld enthält, das den Text "Büro" speichern kann.
Berichte lasse ich am liebsten von einer Ansicht aus starten. Dann kann der Report-Builder ohne Murren die SQL-Code-Erkennung angestellt lassen, sortiert auch brav nach seinen Voreinstellungen usw.
Die Ansicht wird genau wie die Abfragen gefüllt ...
Du versuchst übrigens, einen bereits geöffneten Bericht zu ändern und neu zu laden. Änderungen lassen sich aber nur an einem Bericht durchführen, wenn er editiert wird.
Der Report-Builder ist eine Erweiterung. Das Ganze wird von Base aus nur gestartet. Es gibt die Eigenschaften *.filter und *.reload nicht.
Wenn Du häufiger mit Makros arbeitest, dann wäre es vielleicht günstig, wenn Du Dir Xray installierst. Damit kannst Du sämtliche Befehlsmöglichkeiten auslesen, die Dir Base bietet.

Gruß

Robert

Hallo,

deine Antwort bringt mich auf die Frage: Ist es möglich bevor noch der Bericht geladen wird im Filter die Bedingung mit Makro hineinzuschreiben?

Noch eine Frage: Berichte lassen sich am besten von einer Ansicht aus Starten - meinst du mit Ansicht ein Formular?

Gruß,
Johann

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

Re: Filterbedingung mit Makro in den Bericht schreiben

Beitrag von RobertG » Mo 10. Feb 2014, 15:44

Hallo Johann,

Du kannst den Bericht nicht mit Makros bearbeiten. Da hast Du keine Chance, weil es die Variable .filter dort gar nicht gibt. Das geht wirklich am besten mit Abfragen bzw. Ansichten.

Mit Ansichten meine ich das, was die Datenbänkler als "View" bezeichnen. Du erstellst eine Abfrage, in der alles notwendige drin ist, speicherst sie ab und gehst dann mit der rechten Maustaste auf diese Abfrage. Dort steht ein Menüpunkt "als Ansicht erstellen" (oder so ähnlich). Der Vorteil der Ansicht ist eben, dass für den Bericht das Ganze wie eine Tabelle erscheint. Der Bericht kann also später durch fehlerhafte Interpretation Deines Abfragecodes nichts kaputt machen, weil er nur die Daten, nicht aber den Code zu Gesicht bekommt. Die fehlerhafte Interpretation kommt leider bei Berichten manchmal vor - ja nach verwendeter LO-Version.

Gründe also eine Filtertabelle, speichere dort Deinen Filterwert ab, lasse diesen von der Abfrage auslesen. Wenn das alles klappt, dann mache aus der Abfrage einen "View". Dieser "View" wird die Grundlage für die Daten Deines Berichtes.

Das Verfahren ist auch in einigen Beispieldatenbanken zum Handbuch enthalten.

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

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Filterbedingung mit Makro in den Bericht schreiben

Beitrag von gogo » Mi 12. Feb 2014, 19:17

jertl hat geschrieben:Frage: Ist es möglich bevor noch der Bericht geladen wird im Filter die Bedingung mit Makro hineinzuschreiben?
ja ist es, wenn es sich um einen Bericht des Oracle-Report-Builders handelt. Allerdings ist es nicht wirklich elegant. Die Methode einen View oder eine benutzerdefinierte Variable zu verwenden (wird nicht von allen Datenbanken unterstützt) oder eine temporäre Tabelle zu erstellen ist um einiges einfacher.

Falls Du doch den Filter des Reports ändern willst:
1. Report unsichtbar im Bearbeiten-Modus öffnen
2. Filter setzen
3. Report speichern
4. Report schließen
5. Report ausführen

Ich habe irgendwo ein Beispielmakro, (aber jetzt gerade nicht zur Hand) - falls Du's brauchst: einfach melden.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

jertl
Beiträge: 5
Registriert: So 9. Feb 2014, 15:05

Re: Filterbedingung mit Makro in den Bericht schreiben

Beitrag von jertl » Do 13. Feb 2014, 08:19

RobertG hat geschrieben:Hallo Johann,

Du kannst den Bericht nicht mit Makros bearbeiten. Da hast Du keine Chance, weil es die Variable .filter dort gar nicht gibt. Das geht wirklich am besten mit Abfragen bzw. Ansichten.

Mit Ansichten meine ich das, was die Datenbänkler als "View" bezeichnen. Du erstellst eine Abfrage, in der alles notwendige drin ist, speicherst sie ab und gehst dann mit der rechten Maustaste auf diese Abfrage. Dort steht ein Menüpunkt "als Ansicht erstellen" (oder so ähnlich). Der Vorteil der Ansicht ist eben, dass für den Bericht das Ganze wie eine Tabelle erscheint. Der Bericht kann also später durch fehlerhafte Interpretation Deines Abfragecodes nichts kaputt machen, weil er nur die Daten, nicht aber den Code zu Gesicht bekommt. Die fehlerhafte Interpretation kommt leider bei Berichten manchmal vor - ja nach verwendeter LO-Version.

Gründe also eine Filtertabelle, speichere dort Deinen Filterwert ab, lasse diesen von der Abfrage auslesen. Wenn das alles klappt, dann mache aus der Abfrage einen "View". Dieser "View" wird die Grundlage für die Daten Deines Berichtes.

Das Verfahren ist auch in einigen Beispieldatenbanken zum Handbuch enthalten.

Gruß

Robert
Hallo Robert,
danke für den Hinweis. Werde ich als nächstes probieren.

Gruß,
Johann

jertl
Beiträge: 5
Registriert: So 9. Feb 2014, 15:05

Re: Filterbedingung mit Makro in den Bericht schreiben

Beitrag von jertl » Do 13. Feb 2014, 08:23

gogo hat geschrieben:
jertl hat geschrieben:Frage: Ist es möglich bevor noch der Bericht geladen wird im Filter die Bedingung mit Makro hineinzuschreiben?
ja ist es, wenn es sich um einen Bericht des Oracle-Report-Builders handelt. Allerdings ist es nicht wirklich elegant. Die Methode einen View oder eine benutzerdefinierte Variable zu verwenden (wird nicht von allen Datenbanken unterstützt) oder eine temporäre Tabelle zu erstellen ist um einiges einfacher.

Falls Du doch den Filter des Reports ändern willst:
1. Report unsichtbar im Bearbeiten-Modus öffnen
2. Filter setzen
3. Report speichern
4. Report schließen
5. Report ausführen

Ich habe irgendwo ein Beispielmakro, (aber jetzt gerade nicht zur Hand) - falls Du's brauchst: einfach melden.

Hallo Gogo,

danke auch für deinen Hinweis. Da ich nicht den Oracle-Report-Builders installiert habe, kann ich diese Variante nicht anwenden.


Gruß,
Johann

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

Re: Filterbedingung mit Makro in den Bericht schreiben

Beitrag von lorbass » Do 13. Feb 2014, 17:48

@jertl, warum zitierst du immer vollständige Beiträge? Das muss doch nicht sein! Es mach den Thread unübersichtlich und fördert den Mausradverschleiß. :roll:

Gruß
lorbass

jertl
Beiträge: 5
Registriert: So 9. Feb 2014, 15:05

Re: Filterbedingung mit Makro in den Bericht schreiben

Beitrag von jertl » Do 13. Feb 2014, 18:10

Hallo lorbass,
danke für den Hinweis. Benutze zum ersten mal dieses Forum und habe erst jetzt auf deinen Hinweis hin die Antworttaste entdeckt.

Gruß,
Hans


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