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.