Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Serienbrief erstellen -> Empfänger aus DB auslesen und Druck (https://www.delphipraxis.net/26561-serienbrief-erstellen-empfaenger-aus-db-auslesen-und-druck.html)

Die Muhkuh 25. Jul 2004 14:49


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?

SirThornberry 25. Jul 2004 14:59

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

Die Muhkuh 25. Jul 2004 15:00

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?

Hansa 25. Jul 2004 17:53

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.

Sharky 25. Jul 2004 17:58

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
Zitat:

Zitat von Spider
.... Wie komme ich immer nur an einen Eintrag ran und wie drucke ich das alles aus?

Hai Spider,

möchtest Du jetzt wissen wie Du der Reihe nach alle Ergebnisse deiner Datenbankabfrage durchgehst?
Delphi-Quellcode:
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;
zum drucken -> Rave , QuickReport, FastReport oder wie auch immer du gerne drucken möchtest.

Die Muhkuh 25. Jul 2004 17:58

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
Hi Hansa,


keine schlechte Idee. Werde ich mal ausprobieren

Die Muhkuh 25. Jul 2004 18:01

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
Zitat:

Zitat von Sharky
Zitat:

Zitat von Spider
.... Wie komme ich immer nur an einen Eintrag ran und wie drucke ich das alles aus?

zum drucken -> Rave , QuickReport, FastReport oder wie auch immer du gerne drucken möchtest.

Oh gott, von allem keine Ahnung. Werd dann mal auf die Suche gehen

CenBells 25. Jul 2004 18:03

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
würde dir Fastreport empfehlen.
www.fast-report.com empfehlen. Super schnell und absolut genial.

Gruß
Ken

Die Muhkuh 25. Jul 2004 18:10

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... :(

Hansa 25. Jul 2004 18:16

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.

SirThornberry 25. Jul 2004 18:28

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

Die Muhkuh 25. Jul 2004 18:30

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.

Sharky 25. Jul 2004 18:32

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
Zitat:

Zitat von Hansa
...Und das Hauptdokument wird mit Word erstellt.

Ich bin davon ausgegangen das es eine reine Delphi-Anwendung werden soll. Darum mein Hinweiss auf die diversen "Report-Komponenten".

Die Muhkuh 25. Jul 2004 18:39

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:
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;
Was muss bei Memo1.Lines.Add() rein, damit es mir die empfänger anzeigt?

[edit] Muss ich es erst in ein DBGrid rein machen und von dort weiter verarbeiten? Wäre doch ein bisschen umständlich oder? [/edit]

Die Muhkuh 25. Jul 2004 18:59

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
Zitat:

Zitat von Spider
Was muss bei Memo1.Lines.Add() rein, damit es mir die empfänger anzeigt?

[edit] Muss ich es erst in ein DBGrid rein machen und von dort weiter verarbeiten? Wäre doch ein bisschen umständlich oder? [/edit]

Oki, habs rausgefunden:

Delphi-Quellcode:
Memo1.Lines.Add(query1.Fields.Fields[0].Text);

Sharky 25. Jul 2004 19:02

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
Zitat:

Zitat von Spider
...Oki, habs rausgefunden:

Delphi-Quellcode:
Memo1.Lines.Add(query1.Fields.Fields[0].Text);

Alternativ schaue dir auch einmal query1.FieldByName an.

Hansa 25. Jul 2004 19:05

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
verwende besser "FieldByName"

Die Muhkuh 25. Jul 2004 19:06

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
Hai,

wenn ich schreib
Delphi-Quellcode:
Memo1.Lines.Add(Query1.FieldByName('name').AsString);
Geht nicht, da die Function FieldByName gar nicht angezeigt wird wenn ich query1. schreib. Warum nicht?

DP-Maintenance 25. Jul 2004 19:15

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Object-Pascal / Delphi-Language" nach "Datenbanken" verschoben.
Geht jetzt doch mehr in Richtung DB ;-)

Sharky 25. Jul 2004 19:15

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.

Die Muhkuh 25. Jul 2004 19:18

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
TQuery...

Ok, hast recht es geht.

Hansa 25. Jul 2004 19:24

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
Zitat:

Zitat von Spider
...Geht nicht, da die Function FieldByName gar nicht angezeigt wird wenn ich query1. schreib. Warum nicht?

Das ist höchstwahrscheinlich ein Delphi-Bug, der durch das Update beseitigt werden sollte. Probiere mal zu compilieren. Wenn das geht ists gut so.

Sharky 25. Jul 2004 19:24

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
Zitat:

Zitat von Spider
...Ok, hast recht es geht.

Hast Du daran etwa gezweifelt? :stupid:

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.

Hansa 25. Jul 2004 19:41

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.

Sharky 26. Jul 2004 08:15

Re: Serienbrief erstellen -> Empfänger aus DB auslesen un
 
Zitat:

Zitat von Hansa
Sharky, bitte nicht wieder losschlagen, schön ruhig bleiben

Ich schlage doch nicht.... Wenn schon dann beisse ich ;-)

Zitat:

Der Effekt ist auf jeden Fall in der Bug-Liste vom D7 - Update aufgeführt als beseitigt.
Dann sollte ich wohl doch mal das UpDate einspielen!


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