![]() |
Ohne "Tags" über hundert Druckaufträge
Hi,
ich hab eine DB dort stehen Vornamen und der Nachname drin. In meinem Programm schreibt man als "Tag" z.B. <<Vorname>>, dann wird aus der DB der Vorname beim Drucken eingesetzt. Das Problem ist nun folgendes. Wenn ich mit diesen Tags schreibe, dann druckt er soviele mal wieder Datensätze vorhanden sind. Schreib ich aber keine "Tags" rein, dann knallt er mir den Drucker mit über 100 Druckaufträgen zu. Das ist meine Druckprocedure:
Delphi-Quellcode:
procedure TForm1.Printing;
var I, II: Integer; Left, Top: Integer; MS: TMemoryStream; begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('SELECT Mitgliederv4.* FROM Mitgliederv4'); Query1.Open; Query1.First; for I := 0 to Query1.Fields.Count do begin MS := TMemoryStream.Create; // MemoryStream erstellen reMessage.Lines.SaveToStream(MS); // Eingabe-RichEdit speichern MS.Position := 0; // an Position 0 gehen temp.Lines.LoadFromStream(MS); // Ausgabe-Richedit laden MS.Free; // MemoryStream freigeben //Ersetzen der "Tags" Replace('<<Vorname>>', 'vorname'); Replace('<<Nachname>>', 'name'); Replace('<<GB>>','geburtstag'); Replace('<<Straße>>', 'strasse'); Replace('<<HSN>>', 'hausnummer'); Replace('<<PLZ>>', 'plz'); Replace('<<Ort>>', 'ort'); //Drucken; Left := 100; Top := 100; Printer.Copies := 1; with Printer do begin Canvas.Font.Assign(Temp.Font); Title := 'Serienbrief'; BeginDoc; for II := 0 to temp.Lines.Count - 1 do Canvas.TextOut(Left, Top + (II * Canvas.TextHeight(Temp.Lines[II])), Temp.Lines[II]); EndDoc; end; Query1.Next; end; end; |
Re: Ohne "Tags" über hundert Druckaufträge
Hai Spider,
wofür ist den diese For-Do Schleife?
Delphi-Quellcode:
und was bring das Query1.Next in der Schleife?
.
. Query1.Open; Query1.First; for I := 0 to Query1.Fields.Count do begin . . Query1.Next; end; end; |
Re: Ohne "Tags" über hundert Druckaufträge
Hai Fisch,
das war mal dein Code nur etwas abgewandelt. Hab For-Do gemacht statt While not EOF do. // Edit: Jetzt klingelts grad. Ich geh ja eh alle Datensätze durch, deswegen müsste ich das Query1.Next ja weglassen können oder? |
Re: Ohne "Tags" über hundert Druckaufträge
Zitat:
Vorallem gibt Dir Query1.Fields.Count nicht die Anzahl der Datensätze sonder die Anzahl der Felder in der Tabelle zurück. Wenn schon dann Query1.RecordCount |
Re: Ohne "Tags" über hundert Druckaufträge
Hi,
was wäre dann besser? ForDo mit Query1.RecordCount oder While not EOF do? |
Re: Ohne "Tags" über hundert Druckaufträge
Zitat:
Ausserdem wurde mal gesagt das .RecordCount gelegentlich falsche Werte liefert. |
Re: Ohne "Tags" über hundert Druckaufträge
Ok, dann werde ich mal auf While-Do umbauen...
//Edit: Ich muss ja nur die For-Do-Schleife wegmachen und mit While-Do ersetzen oder? Ok, war so. |
Re: Ohne "Tags" über hundert Druckaufträge
Zitat:
Delphi-Quellcode:
...:cat:...
for I := 0 to MaxInt-1 do
begin Sleep(1000); Application.ProcessMessages; if AbortedSleep then Break; end; |
Re: Ohne "Tags" über hundert Druckaufträge
Zitat:
Delphi-Quellcode:
schöner ;-) Dann sehe ich beim ersten blick das es eine Abbruchbedingung gibt und muss diese nicht in der Schleife suchen :stupid:
begin
while not ((Query1.Eof) or (abbruch)) do begin . . Application.ProcessMessages; Query1.Next; end; end; |
Re: Ohne "Tags" über hundert Druckaufträge
Hi
Zitat:
Grüsse Woki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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