Seite 1 von 1
Keine dynamische Höhe für Memo-Felder in Berichten?
Verfasst: Mi 30. Dez 2015, 22:50
von mhonline
ist es so? Für Texte, die in Memo-Feldern abgelegt wurden, ist es nicht möglich, im Bericht eine dynamische Höhe für die Ausgabe zu wählen, 3 Zeilen nehmen immer den gleichen Platz im Bericht ein, wie 30 Zeilen? Sehr merkwürdig. Eine Briefe-Datenbank läßt sich somit in LO jedenfalls nicht realisieren. Schade eigentlich.
m.
Re: Keine dynamische Höhe für Memo-Felder in Berichten?
Verfasst: Mi 30. Dez 2015, 23:22
von F3K Total
Hi,
ja stimmt, im Report Builder ist die Feldhöhe per default Konstant. Mit selbstprogrammierten Makros läßt sich das ändern, ist allerdings nicht jedermanns Sache und aufwendig.
Was aber problemlos möglich ist, sind Briefe mit Datenbank-Feldern, Feldbefehlen, im Writer. Melde deine Datenbank unter Extras/Optionen/LibreOffice Base/Datenbanken an. Dann drücke F4. Da kann man alles machen. Da sich die Felder im Fließtext befinden, und es dazu auch noch bedingten Text und bedingte Absätze, sogar bedingte Bereiche gibt, kann man jeden Brief aus Datenbankfeldern und, wenn nötig, dazwischen liegendem "festem" Text, sauber zusammenbauen. Man kann einzelne Briefe, aber auch Serienbriefe erzeugen. So formatiert, wie man es wünscht, mit und ohne Bilder/Grafiken und Tabellen.
R
Re: Keine dynamische Höhe für Memo-Felder in Berichten?
Verfasst: Do 31. Dez 2015, 09:31
von RobertG
Hallo m,
das ist leider ein lange offener Bug. Es fehlt schlicht ein Feld in der GUI, mit dem die automatische Zeilenhöhe gewählt werden kann.
Hier die Makro-Variante, die den "Detail"-Bereich auf eine automatische Höhe einstellt. Das Makro wird an einen Button im Formular gebunden, öffnet den Bericht und stellt die Höhe ein.
Code: Alles auswählen
SUB BerichtZeilenhoeheAuto
DIM oTables AS OBJECT
DIM oTable AS OBJECT
DIM inT AS INTEGER
DIM inI AS INTEGER
DIM oRows AS OBJECT
DIM oRow AS OBJECT
DIM oReport AS OBJECT
oReport = ThisDatabaseDocument.ReportDocuments.getByName("Berichtsname").open
oTables = oReport.getTextTables()
FOR inT = 0 TO oTables.count() - 1
oTable = oTables.getByIndex(inT)
IF Left$(oTable.name, 6) = "Detail" THEN
oRows = oTable.Rows
FOR inI = 0 TO oRows.count - 1
oRow = oRows.getByIndex(inI)
oRow.IsAutoHeight = True
NEXT inI
ENDIF
NEXT inT
END SUB
Du musst darauf achten, dass die Textfelder wirklich die gesamte Höhe des Bereiches "Detail" ausfüllen - sonst wird der Zwischenraum ebenfalls mit Feldern einer automatischen Höhe mit Mindesthöhe ausgefüllt.
Wenn Du andere Bereiche mit dem Makro einstellen willst, so starte zuerst einmal einen Bericht und schau, welche Namensbezeichnung der Tabelle gegeben wird.
Gruß
Robert
Re: Keine dynamische Höhe für Memo-Felder in Berichten?
Verfasst: Do 31. Dez 2015, 10:24
von F3K Total
Guten Morgen Robert,
war mir bislang nicht bekannt. Danke für diesen wertvollen Tipp!
Gruß Rik