Serienbrief mit dynamischen Tabellen-Word, OO, etc

Hi allerseits,

ich muss 'n Sereienbrief an 'n paar hundert Kunden schreiben, worin denen mitgeteilt wird, dass die Preise erhöht wurden und wo jedem einzelne Kunde seine höchsteigene Preisliste aufgeführt wird.

Will heißen db-tabellenmäßig hab ich von mir aus „Kunden“, „Artikel“, „Kunden-Artikel-Sonderpreise“ … gerne auch beliebig anders aufbereitet …

Die Serienbriefe enthalten natürlich statischen Text, nur die Adresse und die Sonder-Preisliste sind für jeden Kunden/Brief verschieden (das mit den Adressen ist natürlich nicht das Problem, sondern die dynamischen Preislisten).

Kann man sowas mit MS-Word oder OO-Writer hinkriegen?
Und wenn ja, dann wäre ich für ein paar Infos dankbar (muss nicht bis ins letzte Detail gehen).

Alternative Vorschläge höre ich natürlich auch immer gerne (z. B. ist ja irgendwas mit XML/XSLT oder 'n LaTeX-Code-erzeugenden Skript sicher auch 'ne Lösung etc.)

1000 Dank im Voraus

Gruß
Lala

Hallo,

Alternative Vorschläge höre ich natürlich auch immer gerne (z.
B. ist ja irgendwas mit XML/XSLT oder 'n
LaTeX-Code-erzeugenden Skript sicher auch 'ne Lösung etc.)

Was ist denn das Problem? Einfach die Datenbankinhalte an entsprechende Stellen im LaTeX-Code einfügdn und fertig.

Oder was habe ich übersehen?

Sebastian

Hi Sebastian,

nee, sorry hab ich mich wohl missverständlich ausgedrückt:

Ich würde gerne wissen, wie so was mit Microsoft Word geht (im Zweifel auch OO-Writer) … im Idealfall wird das nur von mir vorbereitet und von anderen dann letztenlich fertig gestellt … bzw. ich zeig den anderen wie man das mit Word machen kann und die nächsten Male wird das dann von denen erledigt.

Die Briefe durch irgenwelche Skripte via LaTeX oder irgend’nem Markup zu erstellen, krieg ich schon selber hin, danke … damit hab ich aber leider nicht viel gewonnen, weil das dann zu 100% von mir erledigt werden muss … wenn das irgendwie in Word erledigt werden kann, kann das prinzipiell jeder erledigen und ich muss nur die Datentabellen liefern.

„Alternative Vorschlägen“ meinte, dass man mich auch gerne für Lösungen jenseits meines Tellerrands ({Standard-Textverarbeitung, LaTeX, XML-Dokumentbeschreibung}) aufklären darf ;o)

Thanks…

Viele Grüße
Lala

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi,
prinzipiell kein problem. alle statischen elemente kommen in den serienbrieftext, alle variablen (anrede, name, adresse, die spezifischen produkte und preise) in eine datenbank. die datenbank kann sein: eine word-tabelle, ein excel-sheet, eine access-tabelle, …
spezifischere hilfe ist etwas schweirig; da reichen die daten nicht.

ich stell mir vor, am gescheitesten ist es, die tabelle, die als unterfutter für den serienbrief dient, aus einer ordentlichen datenbank herstellen und exportieren zu lassen. ich glaub nicht, dass word aus einer komplexen access-datenbank mit mehreren relationen die daten zuverlässig übernimmt. (adressdaten und produkte / preise wirst du, wenn das einigermaßern professionell organisiert ist, ja nicht in einer tabelle gespeichert haben.)

hth
m.

Hi Michael,

erst mal Danke für Deine Antwort …
Vielleicht wär’s besser gewesen ich hätte mir 'n vereinfachtes fiktives Beispiel für mein „Problem“ ausgesucht.

Lass es mich mal so versuchen:

Gegeben sei als Datengrundlage folgende Tabelle (Gruppenmitglieder):

GruppenId | Name
----------------------------
1 | Heidi
1 | Claudia
1 | Luca
2 | Kate
2 | Linda
3 | Naomi

Der Seriendruck soll nun für JEDE DER DREI GRUPPEN einen Brief auswefen, z. B. so:

Brief 1:

Mitglieder der Gruppe 1:

Heidi
Caudia
Luca

Brief 2:

Mitglieder der Gruppe 2:

Kate
Linka

Brief 3:

Mitglieder der Gruppe 3:

Naomi

Wie geht sowas in MS-Word???

Danke im Voraus für die Hilfe

Gruß
Lala

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

???
hi,

Gegeben sei als Datengrundlage folgende Tabelle
(Gruppenmitglieder):

GruppenId | Name

1 | Heidi
1 | Claudia
1 | Luca
2 | Kate
2 | Linda
3 | Naomi

Der Seriendruck soll nun für JEDE DER DREI GRUPPEN einen Brief
auswefen, z. B. so:

Brief 1:

Mitglieder der Gruppe 1:

Heidi
Caudia
Luca

Brief 2:

Mitglieder der Gruppe 2:

Kate
Linka

Brief 3:

Mitglieder der Gruppe 3:

Naomi

Wie geht sowas in MS-Word???

versteh ichs richtig: den mitgliedern der gruppe 1 sollen (neben evtl. anderen daten) alle mitglieder der gruppe 1 (und nur die) mitgeteilt werden; ebenso den anderen gruppen.
???
wodurch unterscheiden sich die texte an die verschiedenen gruppen noch?

wenns nur das ist, was ich bis jetzt verstanden hab, ist das ein serienbrief mit 3 ausprägungen … also ist serienbrief eigentlich zu hoch gegriffen. du brauchst dazu eine datenbank (eine tabelle), die 2 felder (= spalten) hat und 3 datensätze (= zeilen).

1 Heidi, Claudia, Luca
2 Kate, Linka
3 Naomi

statt der beistriche kannst du auch zeilenumbrüche verwenden; dann erscheinen die namen untereinander. wenn weitere gruppenspezifische elemente gebraucht werden, brauchst du weitere spalten; weitere individuelle merkmale (für heidi, kate usw.) müssen dann zu den betreffenden namen in die spalte 2.

aber wie gesagt:

  • für 3 ausprägungen ist ein serienbrief nicht unbedingt produktiv
  • ich bin nich sicher, ob ich das problem verstanden habe.

ich schlag vor: gib noch einmal ein beispiel mit reichhaltigeren daten.

m.

Hallo Lala,

wenn du nicht allzu viele Preisgruppen (spricht verschiedenne Preislisten) hast, dann wär folgendes möglich:
Du erstellst für jede Preisgruppe (=Preisliste) ein Worddokument. Hierfür kannst du die Seriendruckfunktion von Word nutzen.
Im Seriendruckmanager wählst du für das Hauptdokument ‚Erstellen‘–>‚Katalog‘.
Im Hauptdokument erstellst du dann eine Tabellenzeile mit der Anzahl Spalten, die du für die Preisliste benötigst. In die Zellen der Tabelle trägst du die Seriendruckfelder ein. Wenn du dann den Seriendruck in ein neues Dokument startest, erzeugt Word aus den Daten der Datenquelle eine endlos lange Wordtabelle.
ggf. muß du nach dem Seriendruck noch eine Tabellentitelzeile einfügen.

Für den Brief an die Kunden erstellt du ganz normal den Serienbrief. Die Datenquelle für den Serienbrief muß auch die Preisgruppe des Kunden als Feld enthalten.
Am Ende des Briefes fügst du einen Seitenwechsel ein und dahinter mehrere Bedingungsfelder in denen abhängig von der dem Kunden zugeteilten Preisgruppe die entsprechende Preislistendatei eingefügt wird.
Nachfolgend als Beispiel die Bedingen für 2 Preisgruppen:
{ WENN { SERIENDRUCKFELD Preisgruppe } = 1 { EINFÜGENTEXT „C:\Eigene Dateien\Texte_WW\Preisliste_PG1.doc“ } „“"" }{ WENN { SERIENDRUCKFELD Preisgruppe } = 2 { EINFÜGENTEXT „C:\Eigene Dateien\Texte_WW\Preisliste_PG2.doc“ } „“"" }
Diese Felder kannst du über den Button ‚Bedingungsfeld einfügen‘ und das Menü ‚Einfügen‘–>Datei erzeugen. Dabei muss jeweils die Option ‚Verknüpfen‘ aktiviert werden.

Bei der nächste Preiserhöhung müssen dann nur noch die entsprechenden Preislisten-Dateien aktualisiert werden.

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi nochmal,

also dieses Beispiel mit den Gruppen und den Namen sollte wie gesagt einfach nur das einfachste Beispiel sein, das das gleiche Problem widerspiegelt …

Nachmal zuerst das reale Problem:

Es gibt x Kunden und y Artikel.
Jeder Kunde hat beliebig viele höchsteigene Artikelsonderpreise … allerdings mindestens einen Artikelsonderpreis.

Datengrundlage (von mir aus als Oracle-DB):

create table KUNDEN (
 KUNDEN\_ID integer primary key,
 NAME varchar(200),
 STRASSE varchar(200),
 PLZ varchar(10),
 ORT varchar(200),
 ...
);

create table ARTIKEL\_ID (
 ARTIKEL\_ID integer primary key,
 ARTIKEL\_NAME varchar(200),
 ...
);

create table KUNDEN\_ARTIKELPREISE (
 KUNDEN\_ID integer,
 ARTIKEL\_ID integer,
 PREIS decimal(10,2),
 constraint ka\_pk primary key (KUNDEN\_ID, ARTIKEL\_ID),
 constraint ka\_fk1 foreign key (KUNDEN\_ID) reference KUNDEN (KUNDEN\_ID),
 constraint ka\_fk2 foreign key (ARTIKEL\_ID) reference ARTIKEL (ARTIKEL\_ID)
);


Darf gerne auch un-normalisiert sein:

create view DATEN as
select \* from KUNDEN k, ARTIKEL a, KUNDEN\_ARTIKELPREISE p
where p.KUNDEN\_ID=k.KUNDEN\_ID
and p.ARTIKEL\_ID=a.ARTIKEL\_ID
order by p.KUNDEN\_ID, p.ARTIKEL\_ID

Nun soll ein Sereiendruck getätigt werden, der für jeden Kunden GENAU EINEN Brief erstellt, in dem dieser seine neuen Sonderpreise aufgelistet bekommt.

Inhaltlich beispielsweise:


>
>
> >

Sehr geehrte® Frau/Herr >,

leider mussten wir aus unser Preise um 2% erhöhen.
Ihre persönliche Preisliste sieht nun folgendermaßen aus:

 \> \> \>
 \> \> \>
 \> \> \>
 \> \> \>
 ... ... ...

Wir bedanken uns für Ihr Verständnis und verbleiben
mit freundlichen Grüßen

Ihr Firma-Mustermann-Team

So: Das Problem von mir ist, dass ich nicht weiß ob und wenn ja wie man so 'ne Tabelle dynamisch in den Serienbrief einbaut (soll heißen, die Anzahl der Tabellenzeilen sind bei fast jedem Brief verschieden).
Und die Preislisten sollen wirklich als mehr oder wenig schön gestaltete Tabellen erscheinen … also nicht einfach nur die Spalten durch Tabs trennen.

Bezogen auf das Gruppen-Mitglieder-Beispiel bedeutet das, dass die Tabelle natürlich nicht nur sechs Datensätze haben soll sondern von mir aus 600 Datensätze, wobei z. B. folgendes gelten könnte:

select count(*) from gruppen_mitglieder => 600
select count(distinct GRUPPENID) => 160
select min(GRUPPENID) from gruppen_mitglieder => 1
select max(GRUPPENID) from gruppen_mitglieder => 160

select max(ANZAHL) from (select count(*) as ANZAHL from gruppen_mitglieder group by GRUPPENID) => 17

Gruß und wie immer Danke im Voraus
Lala

PS: Diese „Linka“ in meiner letzten Mail sollte natürlich „Linda“ heißen … kleiner Vertipper …

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi,

das problem ist jetzt völlig klar …

(soll heißen, die Anzahl der Tabellenzeilen sind bei fast
jedem Brief verschieden).

… und hier passe ich. ich seh da (mit word) wenig licht.
vielleicht funktioniert die lösung von franz; würde mich freuen.

ich glaub aber, dass das problem deutlich besser mit einem ordentlichen „report“ der zugrundeliegenden datenbank gelöst werden kann. (in access könnt ichs.) solche reports sind durchaus so gestaltbar, dass man sie als serienbrief verschicken kann. die zugrundeliegende abfrage hast du ja schon definiert.

m.

Hi,

Danke für Deine Hilfe …

Ich hab mich jetzt letztendlich dafür entschieden, dass ich diese „Bau-die-Tabellenstruktur-via-Tabs-und-Returns“-Idee aufgreifen werde (auch wenn ich das vorhin noch strikt abgelehnt hab ;o) ).

Will heißen, ich lass mir (via Access/VBA) eine Datentabelle erstellen, die ganz simple die Adressfelder beinhaltet plus einem weiteren Longtext-Feld, wo die gesamte Preisliste in einem einzigen String gespeichert ist (etwa „Artikel1{8}Preis1{11}Artikel2{8}Preis2{11}…“, wobei {8} für Tab steht und {11} für Line-Break).
Danach kann man dann das ganze mit 'nem ganz simplen Seriendruck erledigen.

Ist vielleicht nicht sonderlich schön, aber so kann ich das Ganze halt vorbereiten und jeder kann nachträglich noch das Word-Dokument bearbeiten (im Gegensatz zu irgend’ner XML-, LaTeX- oder Access-Bericht-Lösung)…

Fettes Merci an alle …

Gruß
Lala

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Franz,

danke für den Tipp.
Leider handelt es sicher aber um hunderte verschiedene Preislisten … wo da der genaue Sinn liegt und ob’s überhaupt einen gibt sei mal dahingestellt :o)

Nichtsdestotrotz ist das 'ne nette Lösung von Dir… und mich ganz nebenbei den Effekt gehabt, dass ich gelernt hab, was Word denn so unter „Katalog“, „Zentraldokument“ und „Filialdokument“ versteht … hab augenscheinlich mit Word noch nie größere Dokumente erstellt :o)

Ich hab jetzt aber letztendlich 'ne Lösung gefunden, die ich zwar nicht sonderlich toll finde, aber die’s mir jetzt erst mal tut … steht irgendwo im Thread …

Thanks … mach’s gut.
Lala

Hi allerseits,

ich muss 'n Sereienbrief an 'n paar hundert Kunden schreiben,
worin denen mitgeteilt wird, dass die Preise erhöht wurden und
wo jedem einzelne Kunde seine höchsteigene Preisliste
aufgeführt wird.

Will heißen db-tabellenmäßig hab ich von mir aus „Kunden“,
„Artikel“, „Kunden-Artikel-Sonderpreise“ … gerne auch
beliebig anders aufbereitet …

Die Serienbriefe enthalten natürlich statischen Text, nur die
Adresse und die Sonder-Preisliste sind für jeden Kunden/Brief
verschieden (das mit den Adressen ist natürlich nicht das
Problem, sondern die dynamischen Preislisten).

Kann man sowas mit MS-Word oder OO-Writer hinkriegen?
Und wenn ja, dann wäre ich für ein paar Infos dankbar (muss
nicht bis ins letzte Detail gehen).

Alternative Vorschläge höre ich natürlich auch immer gerne (z.
B. ist ja irgendwas mit XML/XSLT oder 'n
LaTeX-Code-erzeugenden Skript sicher auch 'ne Lösung etc.)

1000 Dank im Voraus

Gruß
Lala

Hallo Lala,

wenn du nicht allzu viele Preisgruppen (spricht verschiedenne
Preislisten) hast, dann wär folgendes möglich:
Du erstellst für jede Preisgruppe (=Preisliste) ein
Worddokument. Hierfür kannst du die Seriendruckfunktion von
Word nutzen.
Im Seriendruckmanager wählst du für das Hauptdokument
‚Erstellen‘–>‚Katalog‘.
Im Hauptdokument erstellst du dann eine Tabellenzeile mit der
Anzahl Spalten, die du für die Preisliste benötigst. In die
Zellen der Tabelle trägst du die Seriendruckfelder ein. Wenn
du dann den Seriendruck in ein neues Dokument startest,
erzeugt Word aus den Daten der Datenquelle eine endlos lange
Wordtabelle.
ggf. muß du nach dem Seriendruck noch eine Tabellentitelzeile
einfügen.

Für den Brief an die Kunden erstellt du ganz normal den
Serienbrief. Die Datenquelle für den Serienbrief muß auch die
Preisgruppe des Kunden als Feld enthalten.
Am Ende des Briefes fügst du einen Seitenwechsel ein und
dahinter mehrere Bedingungsfelder in denen abhängig von der
dem Kunden zugeteilten Preisgruppe die entsprechende
Preislistendatei eingefügt wird.
Nachfolgend als Beispiel die Bedingen für 2 Preisgruppen:
{ WENN { SERIENDRUCKFELD Preisgruppe } = 1 { EINFÜGENTEXT
„C:\Eigene Dateien\Texte_WW\Preisliste_PG1.doc“ } „“"" }{
WENN { SERIENDRUCKFELD Preisgruppe } = 2 { EINFÜGENTEXT
„C:\Eigene Dateien\Texte_WW\Preisliste_PG2.doc“ } „“"" }
Diese Felder kannst du über den Button ‚Bedingungsfeld
einfügen‘ und das Menü ‚Einfügen‘–>Datei erzeugen. Dabei
muss jeweils die Option ‚Verknüpfen‘ aktiviert werden.

Bei der nächste Preiserhöhung müssen dann nur noch die
entsprechenden Preislisten-Dateien aktualisiert werden.

Gruß
Franz