BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Formularfilter auch für Bericht verwenden

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Formularfilter auch für Bericht verwenden

Beitrag von Freischreiber » So 14. Feb 2016, 15:18

Hallo,

die Zwischentabelle steht in 1:n-Beziehung zu der Adresstabelle und in 1:n-Beziehung zur Auftragstabelle (man kann beliebig viele Aufträge pro Adresse und beliebig viele Adressen pro Auftrag erfassen).

Hier im Bericht hätte ich gerne in der Abfrage die Angabe der Auftragsnummern, die der gerade angezeigten Adresse zugeordnet sind.

Der letzte Code hier oben geht, bis auf das dritte LEFT JOIN.

Und gerade merke ich: im Makro geht er gar nicht. Ich habe alle Anführungszeichen durch doppelte ersetzt, aber da scheint noch etwas quer zu liegen...

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formularfilter auch für Bericht verwenden

Beitrag von RobertG » So 14. Feb 2016, 19:39

Hallo Freischreiber,

mir scheint in den verschiedenen Joins der Wurm drin zu sein.
Du musst Dich entscheiden, welche Tabelle alle Datensätze auf jeden Fall abdeckt. Das wird ja wohl die Tabelle "t-adressen" sein.
Alle weiteren Tabellen werden zu dieser mit einem LEFT JOIN verbunden. Also:

Code: Alles auswählen

SELECT ...
FROM "t-adressen"
LEFT JOIN "t-kontakte" ON "t-kontakte"."AdressID" = "t-adressen"."ID"
LEFT JOIN "t-kontaktarten" ON "t-kontaktarten"."ID" = "t-kontakte"."KontaktartID"
LEFT JOIN "t-bankverbindungen" ON "t-bankverbindungen"."AdressID" = "t-adressen"."ID"
LEFT JOIN "zt-auftraege-adressen"."AdressID" = "t-adressen"."ID"
LEFT JOIN "t-auftraege" ON  AND "t-auftraege"."ID" = "zt-auftraege-adressen"."AuftragID"
WHERE "t-adressen"."ID" = 12
Diese "zt-auftraege..." ist ja gar nicht als Tabelle in Deiner Abfrage definiert.

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
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Formularfilter auch für Bericht verwenden

Beitrag von gogo » So 14. Feb 2016, 22:53

Hallo Freischreiber,
wie per PN besprochen - die Test-DB und die Berichtsvorlage (per PN kann man nichts anhängen...):

Damit es funktioniert:
die 3 Dateien des Archivs irgendwohin entpacken,
die Extension BaseReportExtension.oxt aus diesem zip installieren (Doppelklick startet den Extension-Manager, dort ggf. alte Versionen deinstallieren)
Datenbank öffnen - Formular Kontake öffnen - auf den Button "Stammblatt" klicken.

Keine Registrierung der DB nötig
die Berichtsvorlage (Stammblatt.ott) muss sich im selben Verzeichnis wie die Datenbank (Test.odb) befinden
Dateianhänge
Test_Stammblatt.zip
(34.81 KiB) 165-mal heruntergeladen
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

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Formularfilter auch für Bericht verwenden

Beitrag von Freischreiber » Mo 15. Feb 2016, 10:06

Hallo Robert,

okay... die letzten beiden Leftjoins mußte ich etwas ändern, aber dann lief es! Es erscheinen zwar ziemlich viele Zeilen für einen Namen, aber das läßt sich wohl nicht vermeiden...

Problem aber leider immer noch: Im Makro steht jetzt diese Zeile, in der ich aus einfachen doppelte Anführungszeichen machte:

Code: Alles auswählen

 oQuery.Command = " SELECT ""t-adressen"".""Nachname"", ""t-adressen"".""Vorname"", ""t-adressen"".""Straße"", ""t-adressen"".""PLZ"", ""t-adressen"".""Ort"", ""t-kontakte"".""Nummer"", ""t-kontaktarten"".""Kontaktart"", ""t-bankverbindungen"".""Bankname"", ""t-bankverbindungen"".""IBAN"", ""t-bankverbindungen"".""BIC"", ""t-auftraege"".""ID"", ""t-auftraege"".""Gegenstand"" 
 
 FROM ""t-adressen"" 
 
 LEFT JOIN ""t-kontakte"" ON ""t-kontakte"".""AdressID"" = ""t-adressen"".""ID"" LEFT JOIN ""t-kontaktarten"" ON ""t-kontaktarten"".""ID"" = ""t-kontakte"".""KontaktartID"" 
 
 LEFT JOIN ""t-bankverbindungen"" ON ""t-bankverbindungen"".""AdressID"" = ""t-adressen"".""ID"" 
 
 LEFT JOIN ""zt-auftraege-adressen"" ON ""zt-auftraege-adressen"".""AdressID"" = ""t-adressen"".""ID"" 
 
 LEFT JOIN ""t-auftraege"" ON ""t-auftraege"".""ID"" = ""zt-auftraege-adressen"".""AuftragID"" 
 
 WHERE ""t-adressen"".""ID"" =  " = + nFilterwert
(als eine Zeile natürlich, die Farben im Editor sehen "richtig" aus.)

Und beim Aufruf bekomme ich die Fehlermeldung "Das Dokument b-adresse konnte nicht geöffnet werden. Syntaxfehler im SQL-Ausdruck". Und in der Abfrage steht nur "False".

Kann es sein, daß im Makro das Left Join anders geschrieben werden muß?

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formularfilter auch für Bericht verwenden

Beitrag von RobertG » Mo 15. Feb 2016, 16:08

Hallo Freischreiber,

wo ist denn b-adresse in Deinem SQL-Code? Stimmt außerdem das Ende Deines Codes?

Code: Alles auswählen

... ""ID"" =  " = + nFilterwert ...
Da sind zwei Gleichheitszeichen hintereinander.
Ist der Filterwert eine Zahl? Sonst:

Code: Alles auswählen

""ID"" =  '" + nFilterwert+"'"
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

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Formularfilter auch für Bericht verwenden

Beitrag von Freischreiber » Mo 15. Feb 2016, 17:36

Hallo Robert,

! Das letzte Gleichheitszeichen war es... peinlich. Danke!

Jetzt kommt im Bericht aber plötzlich jede Telefonnummer viermal vor, wenn jemand vier Aufträge zugeordnet hat...

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formularfilter auch für Bericht verwenden

Beitrag von RobertG » Mo 15. Feb 2016, 20:52

Hallo Freischreiber,
Freischreiber hat geschrieben: Jetzt kommt im Bericht aber plötzlich jede Telefonnummer viermal vor, wenn jemand vier Aufträge zugeordnet hat...
Die Telefonnummer muss in einer Gruppierung über den Aufträgen stehen, nicht in den Aufträgen selbst. Sie gehört ja wohl irgendwie zu der Anschrift, oder?

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

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Formularfilter auch für Bericht verwenden

Beitrag von Freischreiber » So 6. Mär 2016, 15:14

Hallo Robert,

Entschuldigung, daß ich mich jetzt erst wieder melde.

Die Abfrage liefert jetzt bei einer vorhandenen Telefonnummer vier Zeilen, wenn jemand vier Aufträge zugeordnet hat.

Im Bericht habe ich im Moment nur eine Gruppe: Nachname.
bericht-gruppen.png
bericht-gruppen.png (21.46 KiB) 3209 mal betrachtet
Unter diese erste Gruppe muß also eine Gruppe "Kontakte" und eine Gruppe "Aufträge", wenn ich jede Kontaktnummer und jeden Auftrag nur einmal anzeigen will?

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formularfilter auch für Bericht verwenden

Beitrag von RobertG » So 6. Mär 2016, 16:00

Hallo Freischreiber,

wenn Du die vier Aufträge sortiert darstellen willst, dann musst Du eine Gruppierung "Aufträge" unterhalb der Gruppierung "Nachname" einfügen. In die Gruppierung "Nachname" gehört dann auch die Telefonnummer, wenn die sowieso für jeden Auftrag gleich ist. In den Detail-Bereich gehören die verschiedenen Elemente, die zu einem Auftrag gehören.

Die Untergruppierung für "Aufträge" ist dann nicht notwendig, wenn in Deiner Abfrage pro Auftrag sowieso nur eine Zeile existiert.

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

Freischreiber
Beiträge: 755
Registriert: Fr 28. Mär 2014, 10:41

Re: Formularfilter auch für Bericht verwenden

Beitrag von Freischreiber » Fr 11. Mär 2016, 18:04

Hallo Robert,

sorry wenn ich mich wieder wie der erste Mensch anstelle, aber ich verstehe es einfach nicht:
In die Gruppierung "Nachname" gehört dann auch die Telefonnummer,
Wie kann ich Nummer und Kontaktart IN die Gruppe "Nachname" bringen? Sobald ich Nummer oder Kontaktart auswähle, erscheint eine neue Gruppe:
gruppen.png
gruppen.png (18.18 KiB) 3160 mal betrachtet
Also was ich gerne hätte ist einfach ein Blatt für die ausgewählte Adresse mit Zusatzangaben:
Adresse (Name, Straße, Ort usw.)
Tel. ...
Fax: ...
Mail ...
Auftrag1
Auftrag2
Auftrag3
Auftrag4

Gruß
Freischreiber

Versuch: Ich kann Text- und Beschriftungsfelder für Kontaktart und Nummer in dem Block unter dem letzten Feld ("Bezug") anfügen, aber dann erscheint nur die erste von mehreren vorhandenen Rufnummern.
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten