![]() |
Serienbrief erstellen -> Empfänger aus DB auslesen und Dr
Hi,
ich weiß, pro Frage einen Thread, aber irgendwie hängt alles miteinander zusammen. Also, ich hab vor einen Serienbrief zu erstellen. Die Empfänger stehen in einer Datenbank. Nun muss ich einen Empänger auslesen drucken, nächsten Empfänger auslesen, drucken und so weiter,... Wie lässt sich das am besten reallisieren? |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
erstmal eine procedure schreiben der du den empfänger übergibst und die procedure druckt dann. Und das einfach mit einer Datenbankabfrage kombinieren welche diese funktion zig mal aufruft
|
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Hi,
das ist ja das Prob. Wie komme ich immer nur an einen Eintrag ran und wie drucke ich das alles aus? |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
1. Erstelle eine Textdatei mit den gewünschten Empfängern (aus DB) 2. Lege ein Hauptdokument mit Platzhaltern für die Daten an. 3. Führe die Daten zusammen mit dem Dokument.
|
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Zitat:
möchtest Du jetzt wissen wie Du der Reihe nach alle Ergebnisse deiner Datenbankabfrage durchgehst?
Delphi-Quellcode:
zum drucken -> Rave , QuickReport, FastReport oder wie auch immer du gerne drucken möchtest.
begin
with query1 do begin query1.Close; query1.SQL.Text := 'SELECT * FROM adressen'; query1.Open; query1.First // Ist nicht notwendig. Wollte dir nur den Befehl zeigen (gehe zum ersten Datensatz) While not (query1.Eof) do // Durchlaufen solange es noch Datensätze gibt. begin // Drucke den aktuellen Datensatz query1.Next; // Gehe zum nächsten Datensatz end; end; end; |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Hi Hansa,
keine schlechte Idee. Werde ich mal ausprobieren |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Zitat:
|
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
würde dir Fastreport empfehlen.
![]() Gruß Ken |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Sieht gut. Nur welches muss ich downloaden? FastReport 3?
Hmm, des is ja nur ne Trial... :( |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Wenn es um Serienbriefe geht, wie Spider sagt, dann hat das nichts mit Fastreport zu tun. Die Adress-Daten müssen aus der DB heraus nur dem Textprogramm zur Verfügung stehen. In diesem kann man nun die Vorlage erstellen, mit allem Schnickschnack was Word & Co so bieten.
Die Platzhalter müssen nun definiert werden und fertig. Wie die konkrete Datenquelle erstellt wird : siehe Sharkys Beitrag. Als Datenquelle dient dann diese Datei. Und das Hauptdokument wird mit Word erstellt. |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Warum nicht einfach Printer.Canvas verwenden für die Ausgabe, für ein bissl Text reicht das voll zu und ist total einfach zu handhaben
|
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Naja, ich werde dann mal testen. Ich melde mich wieder wenns probleme gibt.
@Sir hmm, stimmt. |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Zitat:
|
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
@Sharky
es soll eigentlich nur eine Delphi-Anwendung werden. Aber ein Frage hab ich noch.
Delphi-Quellcode:
Was muss bei Memo1.Lines.Add() rein, damit es mir die empfänger anzeigt?
with query1 do
begin query1.Close; query1.SQL.Text := 'SELECT * FROM Mitgliederv4'; query1.Open; query1.First; // Ist nicht notwendig. Wollte dir nur den Befehl zeigen (gehe zum ersten Datensatz) While not (query1.Eof) do // Durchlaufen solange es noch Datensätze gibt. begin Memo1.Lines.Add(); query1.Next; // Gehe zum nächsten Datensatz end; end; [edit] Muss ich es erst in ein DBGrid rein machen und von dort weiter verarbeiten? Wäre doch ein bisschen umständlich oder? [/edit] |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Zitat:
Delphi-Quellcode:
Memo1.Lines.Add(query1.Fields.Fields[0].Text);
|
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Zitat:
|
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
verwende besser "FieldByName"
|
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Hai,
wenn ich schreib
Delphi-Quellcode:
Geht nicht, da die Function FieldByName gar nicht angezeigt wird wenn ich query1. schreib. Warum nicht?
Memo1.Lines.Add(Query1.FieldByName('name').AsString);
|
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Object-Pascal / Delphi-Language" nach "Datenbanken" verschoben.
Geht jetzt doch mehr in Richtung DB ;-) |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Ohne zu wissen welche Komponente Du verwendest ist das nicht leicht zu beantworten ;-)
Nachtrag: Es geht. Nur die Codevervollständigung von Delphi zeigt es dir bei dieser Konstruktion nicht. |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
TQuery...
Ok, hast recht es geht. |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Zitat:
|
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Zitat:
IMHO schaft es die Autovervollständigung nicht weil Lines.Add ja einen String erwartet. FieldByName alleine sagt aber noch nicht das als Ergebniss auch ein String kommen wird. Dies definierst Du ja erst durch das .AsString. |
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Sharky, bitte nicht wieder losschlagen, schön ruhig bleiben ! :mrgreen: Aber manchmal wird es bei der Code-Vervollständigung angezeigt, manchmal aber auch nicht ! Das ist reproduzierbar, aber nur sehr schwierig. Der Effekt ist auf jeden Fall in der Bug-Liste vom D7 - Update aufgeführt als beseitigt.
|
Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz