Seite 1 von 1

Lbre Base Report benutzerdefinierte Funktion

Verfasst: Fr 16. Mär 2018, 12:13
von jh56
In den Feldeigenschaften/Daten besteht die Möglichkeit benutzerdefinierte Funktionen zu hinterlegen. Wie geht dies und lassen sich auch Makros ansprechen.
Ich möchte zur Laufzeit einen Adressblock auf aus den Adressfeldern der Datenquelle anlegen. Dazu könnte ich ein Makro schreiben, ich sehe jedoch nicht, wie ich ihn an das Listenfeld zuordne.
Meine Idee, ich platziere diese Feld in die Kopfzeile der Gruppe
Kann mir da jemand helfen?

Danke für mögliche Antworten
Jürgen

Re: Lbre Base Report benutzerdefinierte Funktion

Verfasst: Fr 16. Mär 2018, 14:58
von F3K Total
Moin,
ich denke du bist auf dem Holzweg. Schau mal ins Base Handbuch, Kapitel Berichte, da findest du etwas über Benutzerdefinierte Funktionen. Kein Makro.
Ich würde die Datenauswahl per Abfrage oder Ansicht in der Datenbank machen, und die dann gefilterten Daten in den Bericht schicken.
Gruß R

Re: Lbre Base Report benutzerdefinierte Funktion

Verfasst: Fr 16. Mär 2018, 19:20
von jh56
Der Holzweg ist da baer nicht so nett:
In der Datenbank habe ich ja gerade die Adressdaten in separate Felder (Name Vorname ...) gespeichert um vernünftig suchen zu können. Innerhalb eines Reports müsste ich eigentlich die Möglichkeit haben, die Felder nach meinen Wünschen beliebig verbinden zu können (mal als Adressblock) und mal anders.
Könnte sich das Entwicklerteam eventuell mit einer solchen Idee anfreunden?

Re: Lbre Base Report benutzerdefinierte Funktion

Verfasst: Fr 16. Mär 2018, 19:37
von F3K Total
jh56 hat geschrieben:
Fr 16. Mär 2018, 19:20
Könnte sich das Entwicklerteam eventuell mit einer solchen Idee anfreunden?
Da bist du hier leider falsch, dies ist ein Anwenderforum, in dem Anwender anderen in ihrer Freizeit helfen. Mit Wünschen an die Software musst du dich an Libre Office Bugzilla wenden.
... die Felder nach meinen Wünschen beliebig verbinden zu können (mal als Adressblock) und mal anders ...
Auch das Verbinden von Texten würde ich in der Datenbank machen. Für jedes Layout braucht man dann entweder einen eigenen Bericht, oder man baut den einen per Makro, wenn man es programmieren kann, um, geht, ist aber sehr aufwändig. Würde ich nicht machen.
Gruß R

Re: Lbre Base Report benutzerdefinierte Funktion

Verfasst: Fr 16. Mär 2018, 22:48
von RobertG
Hallo jh56,

an dem Report-Builder arbeitet vom Prinzip her kein Entwickler. Da müsste schon jemand richtig gut bezahlt werden, damit er das Ding einmal richtig durchleuchtet und eventuell erst einmal nur die Bugs beseitigt.

Der Weg, um Adressfelder hin zu bekommen, ist der über vernünftige Abfragen, die zudem noch besser als Ansichten erstellt werden, damit der Report-Bilder nicht über irgendetwas stolpert. Was soll daran so schwierig sein, wenn Du auf der anderen Seite über "benutzerdefinierte Funktionen" im Report-Builder nachdenkst?

Nutze die Möglichkeiten der vorhergehenden Abfrage so weit wie möglich aus. Mach' daraus eine Ansicht, indem Du die Filterung über eine Filtertabelle vornimmst. Erstelle anschließend den Bericht mit dem Report-Builder.

Gruß

Robert

Re: Lbre Base Report benutzerdefinierte Funktion

Verfasst: Sa 17. Mär 2018, 08:38
von jh56
ich glaube eigentlich, dass ich Datenbanken mit Aufbau und abfragen begriffen habe (30 JAhre beruflich mit Datenbanken; 15 Jahre SAP und 7 Jahre Axapta incl. DB-Design und Berichtsdesign).

Die Abfrage ist richtig. Ich hole mir alle Adressfelder. Da ich sie in der Positionszeile nicht per Routine ins Adressformat basteln kann wäre ich ja auch bereit, sie in einer Gruppenzeile als Zeile zusammen zu bauen. Hierfür müssten aber dann wenigstens Stringfunktionen wie Concatenate oder, wie im Makro Str1 + Str2 + Str3 möglich sein. Das finde ich aber nicht.


'muss dann Wohl eine neue Tabelle bauen, die ich per Programm in Abhängigkeit der Stammdatenänderung abändere. Das widerspricht eigentlich dem Datenbankkonzept (mehre Tabelle mit den gleichen Daten.

Re: Lbre Base Report benutzerdefinierte Funktion

Verfasst: Sa 17. Mär 2018, 08:57
von F3K Total
Moin,
es gibt im SQL der HSQLDB durchaus CONCAT, am einfachsten durch zwei Pipe-Zeichen, ein Beispiel:

Code: Alles auswählen

SELECT "Nachname" || IFNULL(', ' || "Vorname" , '') AS "Name" FROM  "Tabelle_Adressen"
Mit IFNULL kommt kein Komma, wenn der Vorname fehlt.
Concat.PNG
Concat.PNG (9.74 KiB) 3529 mal betrachtet
Solltest du nicht wissen, wie man in die SQL-Ansicht kommt?
Zwei Möglichkeiten, entweder
  • Abfrage in der Entwurfsansicht erstellen ... und dann den blau markierten Button in folgendem Bild drücken
    EA_AU.png
    EA_AU.png (38.82 KiB) 3529 mal betrachtet
  • oder direkt Abfrage in SQL-Ansicht erstellen ...

Es gibt hunderte weitere SQL-Befehle, die du in der SQL-Ansicht verwenden kannst:
Den HSQL-USER-Guide findest du innerhalb der .zip Datei die du hier mit Version hsqldb_1_8_0 herunterladen kannst. Der USER-Guide befindet sich dann innerhalb der .zip unter dieser Adresse: \hsqldb\doc\guide\ sowohl als .pdf, als auch als HTML-Version oder auch online direkt unter http://www.hsqldb.org/doc/1.8/guide/
Und falls du die .odb Datei in Front-und Backend teilst, kannst du auf HSQL 2.xx upgraden, da gibt es dann auch GROUP_CONCAT.
Gruß R

Re: Lbre Base Report benutzerdefinierte Funktion

Verfasst: Sa 17. Mär 2018, 09:26
von RobertG
... und hier die Passage aus dem Handbuch, Kapitel "Berichte", für das Adressfeld - incl. Zeilenumbrüchen:

Code: Alles auswählen

SELECT "Anrede"||CHAR(13)||CHAR(10)||"Vorname"||' '||"Nachname"||CHAR(13)||CHAR(10)
||"Strasse"||'  '||"Nr"||CHAR(13)||CHAR(10)||"Postleitzahl"||' '||"Ort" AS "Adresse" FROM "Leser"
Gruß

Robert