AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fastreport 6 - Etikettendruck

Ein Thema von Doppelmeter · begonnen am 19. Nov 2020 · letzter Beitrag vom 24. Nov 2020
Antwort Antwort
Doppelmeter

Registriert seit: 19. Nov 2020
4 Beiträge
 
#1

Fastreport 6 - Etikettendruck

  Alt 19. Nov 2020, 12:17
In Fastreport sollen Etiketten gedruckt werden.

Die dazugehörigen Daten liegen als Dataset vor. Es kann eine beliebige Anzahl Datensätze vorliegen. In jedem Datensatz stehen neben den Etikettendaten auch die Anzahl der Etiketten, die jeweils gedruckt werden sollen.

Beispiel für Datensätze, die anliegen
Datensatz|Produkt|...|Anzahletiketten
1........|.......|...|2
2........|.......|...|5
3........|.......|...|4

Das Dataset wird aktviert und Satz für Satz ausgelesen. Bei jedem Durchlauf soll das Etikett mit <Anzahletiketten> gedruckt werden.
Miniaturansicht angehängter Grafiken
fastreport_01.png  
  Mit Zitat antworten Zitat
Doppelmeter

Registriert seit: 19. Nov 2020
4 Beiträge
 
#2

AW: Fastreport 6 - Etikettendruck

  Alt 19. Nov 2020, 12:34
Das angehängte Bild zeigt die bisherigen Versuche, die aber allesamt gescheitert sind. Es werden in dieser Version die doppelte Anzahl ausgedruckt.

Zur Erläuterung
Im ersten Masterdata wird die Gesamtzahl aller Datensätze addiert.
Zitat:
Select
sum(ceil(cast(ap.Bestellmenge as float) / cast(um.Karton_inhalt as float))) as Gesamtzahl
from printjobs PJ
left join AUFTRAGSKOPF ak on AK.ID = PJ.TAB_ID
left join Auftragsposi AP on AP.Auftrags_ID = AK.ID
left join Artikel art on art.ID = AP.artikel_ID
left join Umschliessungen um on um.ID = art.umschliessung_ID
where PJ.JOB_ID = :Job
Hier steht nur 1 Datensatz mit der Anzahl der Gesamtetiketten


Im zweiten Masterdata wird der gleiche SQL ausgeführt mit dem Unterschied, dass die Anzahl der

Zitat:
Select
ceil(cast(ap.Bestellmenge as float) / cast(um.Karton_inhalt as float)) as Anzahl
from printjobs PJ
left join AUFTRAGSKOPF ak on AK.ID = PJ.TAB_ID
left join Auftragsposi AP on AP.Auftrags_ID = AK.ID
left join Artikel art on art.ID = AP.artikel_ID
left join Umschliessungen um on um.ID = art.umschliessung_ID
where PJ.JOB_ID = :Job
Hier stehen die Anzahl der Etiketten pro Datensatz drin

Zitat:
Im Detaildata stehen dann die Daten für das Etikett drin.
Select
pj.Tab_ID,
Coalesce(ar.ANREDE, '') as Anrede ,
ak.name as NAME1,
ak.NAME2,
...
art.Bezeichnung,
AP.Bestellmenge,
UM.Karton_Inhalt,
ceil(cast(ap.Bestellmenge as float) / cast(um.Karton_inhalt as float)) as Kartonmenge
from printjobs PJ
left join AUFTRAGSKOPF ak on AK.ID = PJ.TAB_ID
left join Auftragsposi AP on AP.Auftrags_ID = AK.ID
left join ANREDEN ar on ak.anreden_ID = ar.ID
left join ANREDEN var on ak.versand_anreden_ID = var.ID
left join Artikel art on art.ID = AP.artikel_ID
left join Umschliessungen um on um.ID = art.umschliessung_ID
where PJ.JOB_ID = :Job
Im Code wird Folgendes abgehandelt

Zitat:
procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
Job := <printjob_id>;
//Job := 2694;
QuGesamtetiketten.Active := True;
Etikett.Visible := QuGesamtetiketten.FieldByName( 'Gesamtzahl' ).Asinteger > 0;
Etikett.PageCount := QuGesamtetiketten.FieldByName( 'Gesamtzahl' ).Asinteger;
QuAnzahlpositionen.Active := True;
QuEtikett.Active := True;
Karton := 1;
end;

procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
begin
MePalette.Text := 'Karton ' + IntToStr( Karton ) + ' von ' + QuGesamtetiketten.FieldByName( 'Gesamtzahl' ).AsString;
Karton := Karton + 1;

end;

begin

end.

Wer hat eine Idee, wie das funktionsfähig umgesetzt werden kann?

Bin dankbar für jede Anregung.
Miniaturansicht angehängter Grafiken
fastreport_02.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fastreport 6 - Etikettendruck

  Alt 19. Nov 2020, 12:58
Ohne jetzt viel am FastReport rumfummeln zu müssen, kannst du auch einfach über einen JOIN für "alle" Labels je einen Datensatz bereitstellen.
Also wenn Anzahl=X, dann kommt dieser Datensatz eben x-Mal im DataSet vor.
(hier alles in einem DataSet hinteinander)



Oder via Master/Detail:
Ein Master-DataSet mit allen Datensätzen
und ein Detail-DataSet wo die entsprechende Anzahl an Datensätzen generiert wird (jeweilige Anzahl der Etiketten zum entsprechenden MasterData)
Ähnlich dem ersten Vorschlag: Über einen JOIN die nötogen Spalten des Masta-Datensatzes über einen "Generator" von "1 bis Anzahl" dupplizieren.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Nov 2020 um 13:04 Uhr)
  Mit Zitat antworten Zitat
Doppelmeter

Registriert seit: 19. Nov 2020
4 Beiträge
 
#4

AW: Fastreport 6 - Etikettendruck

  Alt 24. Nov 2020, 09:07
Ok, das hat sich mittlerweile erledigt. Eine Lösung wurde gefunden.
  Mit Zitat antworten Zitat
Doppelmeter

Registriert seit: 19. Nov 2020
4 Beiträge
 
#5

AW: Fastreport 6 - Etikettendruck

  Alt 24. Nov 2020, 09:49
Es gibt jetzt noch eine weitere Problematik.

Die Etiketten die gedruckt werden sollen, sollen auf einem Brother Drucker QL560 mit den Etiketten DK-11208 ausgedruckt werden. Diese haben das Format 38 x 90 mm.
Das Format im Report ist auf Hochformat, Breite 3,8 cm, Höhe 9 cm eingestellt.
Wird der Druck dann durchgeführt, kommt zwar am Drucker ein Auftrag an, der Druck wird aber aufgrund einem Formatfehler nicht ausgegeben und die rote Lampe blinkt.
Wird der druck in eine PDF-Datei umgeleitet, wird das Ergebnis dargestellt, wie wenn eine DinA4-Seite gedruckt worden wäre. Möglicherweise ist das aber nur die Darstellung des Adobe-Readers.

Der Anhang zeigt die Einstellungen.

Wer hat Erfahrung mit solchen Druckern/Etikettendrucks? und weiss Abhilfe.

Bin für jeden Tipp dankbar.
Miniaturansicht angehängter Grafiken
fastreport_03.png  
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz