Hallo,
ich versuch mich gerade daran, Serienbriefe zu erstellen.
Ihre Mailmergedemo hab ich mir angeschaut und den Quellcode (abgewandelt) übernommen.
Ich erstelle für jeden Datensatz eine neue Seite.
Mein Problem ist, dass zwar für jeden Datensatz das Merge ausgeführt wird, dabei werden die Werte aber immer in allen Feldern des Dokuments ersetzt. Das führt dazu, dass immer auf allen Seiten die Daten des LETZTEN Datensatzes stehen, weil die Werte in den vorherigen Seiten ersetzt werden.
Hier einmal mein Quellcode:
cdsListe.DisableControls;
try
rt.BeginUpdate;
FirstRun := True;
cdsListe.First;
rt.Clear;
while not cdsListe.EOF do
begin
rt.MergeText;
if FirstRun then
begin
LoadStringToMemo(rt, rtSource.AsString);
{WORKAROUND FÜR DIESES PROBLEM: http://wpcubed.com/forum/viewtopic.php?p=15929#15929}
rt.CPPosition := MaxInt; // to end
FirstRun := False;
// Break;
end
else
begin
Section := rt.FastAppendText(rtSource, true, [wpCreateNewPage]);
Section.Select := [wpsec_ResetOutlineNums];
end;
cdsListe.Next;
end;
finally
rt.EndUpdate;
cdsListe.EnableControls;
rt.ReformatAll(True, True);
end;
Alles anzeigen
Die Daten sind vom TClientDataSet mit einer TDatasource verbunden. Und diese Datasource mit einem WPMMDataProvider, der wiederrum mit dem TWPRichText.
Wenn ich einmal das Break testweise auskommentiere, dann hab ich eine Seite mit den Werten aus dem ersten Datensatz. Daher bin ich sicher, dass das Merge für jeden Datensatz auch ausgeführt wird.
Wie kann ich dafür sorgen, dass das Merge immer nur für die aktuelle Seite ausgeführt wird und nicth für das gesamte Dokument?
Vielen Dank!
Jens