Einzelnen Beitrag anzeigen

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