Seite 1 von 2

[gelöst] Seriendruck für einen Katalog (Auktionsartikel)

Verfasst: Fr 2. Feb 2024, 21:09
von Nightskull
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.
2. SDFinWriter.png
2. SDFinWriter.png (46.13 KiB) 1644 mal betrachtet
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:
0. KategorienVorher.png
0. KategorienVorher.png (153.05 KiB) 1644 mal betrachtet
1.KategorienNachher.png
1.KategorienNachher.png (154.66 KiB) 1644 mal betrachtet

Re: Seriendruck für ein Katalog (Auktionsartikel)

Verfasst: Fr 2. Feb 2024, 21:59
von mikele
Hallo,
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
Dadurch werden alle Seitenumbrüche entfernt.

Re: Seriendruck für ein Katalog (Auktionsartikel)

Verfasst: Sa 3. Feb 2024, 09:46
von miesepeter
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

Re: Seriendruck für ein Katalog (Auktionsartikel)

Verfasst: Sa 3. Feb 2024, 11:36
von Nightskull
mikele hat geschrieben:
Fr 2. Feb 2024, 21:59
Hallo,
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
Dadurch werden alle Seitenumbrüche entfernt.
Hallo mikeleb,

habe das Macro versucht, leider ohne Ergebnis. Also es passiert nicht , auch keine Fehlermeldung.

Re: Seriendruck für ein Katalog (Auktionsartikel)

Verfasst: Sa 3. Feb 2024, 11:44
von mikele
Hallo,
du hast das Makro in der fertigen Datei laufen lassen?
@miesepeter: ganz coole Idee!

Re: Seriendruck für ein Katalog (Auktionsartikel)

Verfasst: Sa 3. Feb 2024, 12:13
von Nightskull
mikele hat geschrieben:
Sa 3. Feb 2024, 11:44
Hallo,
du hast das Makro in der fertigen Datei laufen lassen?
@miesepeter: ganz coole Idee!
Hallo,

Ja in der Datei mit den vielen Seiten.
Die Idee von miesepeter habe ich nicht verstanden?

Re: Seriendruck für ein Katalog (Auktionsartikel)

Verfasst: Sa 3. Feb 2024, 12:29
von mikele
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.

Re: Seriendruck für ein Katalog (Auktionsartikel)

Verfasst: Sa 3. Feb 2024, 17:07
von karolus
Hallo

Code: Alles auswählen

oParTest.PageDescName=""
ich nehme an das soll lauten:

Code: Alles auswählen

oPar.Text.PageDescName=""
?!

Re: Seriendruck für ein Katalog (Auktionsartikel)

Verfasst: Sa 3. Feb 2024, 18:36
von Nightskull
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.
hallo @mikele,

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?
Ergebnis.png
Ergebnis.png (857.21 KiB) 1566 mal betrachtet

Re: Seriendruck für ein Katalog (Auktionsartikel)

Verfasst: Sa 3. Feb 2024, 19:48
von mikele
Hallo,
@karolus: Danke, das ist der entscheidende Fehler (das kommt, wenn man nachdem man fertig ist noch etwas ändert ... :oops: :oops: :oops: )
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
@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:

Code: Alles auswählen

=WENN(A2=A1;"";A2)
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.