🙏 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!🍀
>> 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] Seriendruck für einen Katalog (Auktionsartikel)
- Nightskull
- ! Supporter - Spende !
- Beiträge: 13
- Registriert: Fr 2. Feb 2024, 07:30
[gelöst] Seriendruck für einen Katalog (Auktionsartikel)
Hallo, vielleicht habt ihr eine Idee wie ich ein Katalog in LO mit Seriendruckfelder aus einer Datenbank (Calc-Tabelle) realisieren kann.
Ich bin schon mal soweit, laut eurem Tipp (SerienbriefCalcdateiAlsDatenquelleEinbindenv2.pdf), wie man die Seriendruckfelder platzieren kann aus eine Datenbank.
Jetzt habe ich aber das Problem sobald ich das Writer Dokument drucken will, zunächst alle Seriendruckfelder jeweils auf eine Seite platziert werden.
Es sind ca. 1800 Seiten, soviel wie Auktionsartikel.
Das ist aber nicht sinnvoll, da die einzelnen Auktionsartikel hintereinander mit einer Zeile Zeile Abstand folgen sollten.
So sollte es aussehen:
Ich bin schon mal soweit, laut eurem Tipp (SerienbriefCalcdateiAlsDatenquelleEinbindenv2.pdf), wie man die Seriendruckfelder platzieren kann aus eine Datenbank.
Jetzt habe ich aber das Problem sobald ich das Writer Dokument drucken will, zunächst alle Seriendruckfelder jeweils auf eine Seite platziert werden.
Es sind ca. 1800 Seiten, soviel wie Auktionsartikel.
Das ist aber nicht sinnvoll, da die einzelnen Auktionsartikel hintereinander mit einer Zeile Zeile Abstand folgen sollten.
So sollte es aussehen:
Zuletzt geändert von Nightskull am Di 6. Feb 2024, 19:16, insgesamt 2-mal geändert.
Grüße Michael
Re: Seriendruck für ein Katalog (Auktionsartikel)
Hallo,
am einfachsten jagst du folgendes Makro über die Datei:
Dadurch werden alle Seitenumbrüche entfernt.
am einfachsten jagst du folgendes Makro über die Datei:
Code: Alles auswählen
Sub Main
oEnum = ThisComponent.Text.createEnumeration()
Do While oEnum.hasMoreElements()
oPar = oEnum.nextElement()
If oPar.supportsService("com.sun.star.text.Paragraph") Then
oParTest.PageDescName=""
End If
Loop
End Sub
Gruß,
mikele
mikele
- miesepeter
- * LO-Experte *
- Beiträge: 2142
- Registriert: So 19. Dez 2010, 18:16
- Wohnort: Bayern
Re: Seriendruck für ein Katalog (Auktionsartikel)
Seitenumbruch im erzeugten Serienbriefdokument löschen ohne Makro
Beim Serienbrief werden die in einer einzelnen Datei gespeicherten "Ausdrucke" immer über den Seitenumbruch, der im ersten Absatz eines Teildokuments auftritt, gesteuert.
Die Lösung bestände also darin, dem ersten Absatz der mit mit Feldbefehlen gefüllten Seit eine singuläre Absatzvorlage zuzuweisen, also z. B. FließtextErsterAbsatz oder ähnlich.
Nach dem "Ausdruck" in eine Seriendokumentdatei kann man alle diese Absätze für alle "Teildokumente" markieren (z. B. mit SUCHEN&ERSETZEN) und manuell für alle einen Seitenumbruch entfernen/zuweisen/entfernen (u. U. mehrmals, dann geht das schon).
Ciao
Beim Serienbrief werden die in einer einzelnen Datei gespeicherten "Ausdrucke" immer über den Seitenumbruch, der im ersten Absatz eines Teildokuments auftritt, gesteuert.
Die Lösung bestände also darin, dem ersten Absatz der mit mit Feldbefehlen gefüllten Seit eine singuläre Absatzvorlage zuzuweisen, also z. B. FließtextErsterAbsatz oder ähnlich.
Nach dem "Ausdruck" in eine Seriendokumentdatei kann man alle diese Absätze für alle "Teildokumente" markieren (z. B. mit SUCHEN&ERSETZEN) und manuell für alle einen Seitenumbruch entfernen/zuweisen/entfernen (u. U. mehrmals, dann geht das schon).
Ciao
- Nightskull
- ! Supporter - Spende !
- Beiträge: 13
- Registriert: Fr 2. Feb 2024, 07:30
Re: Seriendruck für ein Katalog (Auktionsartikel)
Hallo mikeleb,mikele hat geschrieben: ↑Fr 2. Feb 2024, 21:59Hallo,
am einfachsten jagst du folgendes Makro über die Datei:Dadurch werden alle Seitenumbrüche entfernt.Code: Alles auswählen
Sub Main oEnum = ThisComponent.Text.createEnumeration() Do While oEnum.hasMoreElements() oPar = oEnum.nextElement() If oPar.supportsService("com.sun.star.text.Paragraph") Then oParTest.PageDescName="" End If Loop End Sub
habe das Macro versucht, leider ohne Ergebnis. Also es passiert nicht , auch keine Fehlermeldung.
Grüße Michael
Re: Seriendruck für ein Katalog (Auktionsartikel)
Hallo,
du hast das Makro in der fertigen Datei laufen lassen?
@miesepeter: ganz coole Idee!
du hast das Makro in der fertigen Datei laufen lassen?
@miesepeter: ganz coole Idee!
Gruß,
mikele
mikele
- Nightskull
- ! Supporter - Spende !
- Beiträge: 13
- Registriert: Fr 2. Feb 2024, 07:30
Re: Seriendruck für ein Katalog (Auktionsartikel)
Hallo,
Ja in der Datei mit den vielen Seiten.
Die Idee von miesepeter habe ich nicht verstanden?
Grüße Michael
Re: Seriendruck für ein Katalog (Auktionsartikel)
Hallo,
du könntest meine datei von hier
https://de.openoffice.info/download/file.php?id=20639
nehmen (da sind schon die Absatzvorlagen mit den Formatierungen enthalten, das Makro könnte auch entfernt werden).
Die erste Zeile (mit der Katalog_ID bzw. -bezeichnung) bekommt die Formatvorlage "auktionskategorie".
Dann fügst du die Seriendruckfelder ein und erstellst die Seriendruckdatei. In dieser Datei gehst du dann auf Suchen&Ersetzen und lässt nach der Absatzvorlage "auktionskategorie" suchen ("Alle suchen"). Dadurch werden alle dieses Absätze markiert/ausgewählt.
Über ->Format->Absatz->Textfluss kannst du nun die Umbrüche entfernen.
du könntest meine datei von hier
https://de.openoffice.info/download/file.php?id=20639
nehmen (da sind schon die Absatzvorlagen mit den Formatierungen enthalten, das Makro könnte auch entfernt werden).
Die erste Zeile (mit der Katalog_ID bzw. -bezeichnung) bekommt die Formatvorlage "auktionskategorie".
Dann fügst du die Seriendruckfelder ein und erstellst die Seriendruckdatei. In dieser Datei gehst du dann auf Suchen&Ersetzen und lässt nach der Absatzvorlage "auktionskategorie" suchen ("Alle suchen"). Dadurch werden alle dieses Absätze markiert/ausgewählt.
Über ->Format->Absatz->Textfluss kannst du nun die Umbrüche entfernen.
Gruß,
mikele
mikele
Re: Seriendruck für ein Katalog (Auktionsartikel)
Hallo
?!
ich nehme an das soll lauten:Code: Alles auswählen
oParTest.PageDescName=""
Code: Alles auswählen
oPar.Text.PageDescName=""
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
- Nightskull
- ! Supporter - Spende !
- Beiträge: 13
- Registriert: Fr 2. Feb 2024, 07:30
Re: Seriendruck für ein Katalog (Auktionsartikel)
hallo @mikele,mikele hat geschrieben: ↑Sa 3. Feb 2024, 12:29
Die erste Zeile (mit der Katalog_ID bzw. -bezeichnung) bekommt die Formatvorlage "auktionskategorie".
Dann fügst du die Seriendruckfelder ein und erstellst die Seriendruckdatei. In dieser Datei gehst du dann auf Suchen&Ersetzen und lässt nach der Absatzvorlage "auktionskategorie" suchen ("Alle suchen"). Dadurch werden alle dieses Absätze markiert/ausgewählt.
Über ->Format->Absatz->Textfluss kannst du nun die Umbrüche entfernen.
dein Tipp war wieder mal für mich hervoragend.
Das hat jetzt so funktioniert.
Ich habe meine Vorlage mit den formatierten Daten aus der DatenbankTabelle mit den Seriendruckfelder genommen.
Dann wie du oben beschrieben ausgeführt.
Das i Tüpfelchen wäre jetzt noch die doppelten Kategorien 1-176 nur einmal in den Dokument erscheinen lassen.
Eventuell mit einem Macro?
Grüße Michael
Re: Seriendruck für ein Katalog (Auktionsartikel)
Hallo,
@karolus: Danke, das ist der entscheidende Fehler (das kommt, wenn man nachdem man fertig ist noch etwas ändert ...
)
So wird es richtig:
@NightSkull: Um die wiederholten Kategorien zu entfernen, würde ich die csv-Datei bearbeiten. Ich gehe mal davon aus, dass in der cvs eine Spalte "Kategorie" exististiert und ab Zeile 2 die Werte darin stehen. In der ersten freien Spalte (nehmen wir mal an es wäre die Spalte H) würde ich in H1 eine neue Überschirft setzen (Kategorie_kurz).
In H2 dann die Formel:
und nach unten ziehen.
Wenn du die Datei dann wieder als csv abspeicherst, werden nur die Werte (nicht die Formel) gespeichert. Diese Spalte kannst du dann als Seriendruckfeld nutzen.
@karolus: Danke, das ist der entscheidende Fehler (das kommt, wenn man nachdem man fertig ist noch etwas ändert ...



So wird es richtig:
Code: Alles auswählen
Sub Main
oEnum = ThisComponent.Text.createEnumeration()
Do While oEnum.hasMoreElements()
oPar = oEnum.nextElement()
If oPar.supportsService("com.sun.star.text.Paragraph") Then
oPar.PageDescName=""
End If
Loop
End Sub
In H2 dann die Formel:
Code: Alles auswählen
=WENN(A2=A1;"";A2)
Wenn du die Datei dann wieder als csv abspeicherst, werden nur die Werte (nicht die Formel) gespeichert. Diese Spalte kannst du dann als Seriendruckfeld nutzen.
Gruß,
mikele
mikele
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.