AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge FastReport TfrxUserDataSet Summe ziehen
Thema durchsuchen
Ansicht
Themen-Optionen

FastReport TfrxUserDataSet Summe ziehen

Ein Thema von Ykcim · begonnen am 17. Feb 2025 · letzter Beitrag vom 21. Feb 2025
 
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#4

AW: FastReport TfrxUserDataSet Summe ziehen

  Alt 18. Feb 2025, 17:56
Hallo Zusammen,

ist die Frage schlecht erklärt oder so einfach?

Ich habe leider kein Beispiel im Internet oder im Handbuch für TfrxUserDataSet gefunden...

Ich habe es, damit ich weiterkomme, jetzt so gelöst, aber schön ist etwas anderes...

Delphi-Quellcode:
procedure TForm1.btnCreateLabel1Click(Sender: TObject);
var Rprt: TfrxReport;
      frxData: TfrxComponent;
begin
   Rprt:= TfrxReport.Create(nil);
   JsDataProforma:= TJSONArray.Create;
   Try
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "1","description": "Paket englisch", "price": "20,50", "mwst": "0,19"}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "1","description": "Paket französisch", "price": "25,50", "mwst": "0,19"}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "1","description": "Paket deutsch", "price": "30,50", "mwst": "0,19"}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "","description": "", "price": "", "mwst": ""}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "","description": "", "price": "", "mwst": ""}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "","description": "", "price": "", "mwst": ""}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "","description": "", "price": "", "mwst": ""}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "","description": "", "price": "", "mwst": ""}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "","description": "", "price": "", "mwst": ""}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "","description": "", "price": "", "mwst": ""}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "","description": "", "price": "", "mwst": ""}') as TJSONObject);
      JsDataProforma.AddElement(TJSONObject.ParseJSONValue('{"qty": "","description": "", "price": "", "mwst": ""}') as TJSONObject);
      frxDataSet.RangeBegin:= rbFirst;
      frxDataSet.RangeEnd:= reCount;
      frxDataSet.RangeEndCount:= JsDataProforma.Count;
      Rprt.OnGetValue:= frxRprtProformaOnGetValue;
      Rprt.LoadFromFile(extractfilepath(paramstr(0)) + '.\Res\Test.fr3');

      frxData:= Rprt.FindObject('DataItems');
      (frxData as Tfrxmasterdata).DataSet:= frxDataSet;

      Rprt.ShowReport(True);
   Finally
      Rprt.Free;
   End;
end;
Und im OnGetValue dann wild herumgestrikt...

Delphi-Quellcode:
procedure TForm1.frxRprtProformaOnGetValue(const VarName: string; var Value: Variant);
var JsData, JsPrewData: TJSONObject;
      qtyValue, totalValue, priceValue, nettoKum, mwstKum, bruttoKum, mwst: string;
begin
   if JsDataProforma.Items[frxDataSet.RecNo] is TJSONObject then begin
      JsData:= TJSONObject(JsDataProforma.Items[frxDataSet.RecNo]);
      if frxDataSet.RecNo = 0 then begin
         nettoKum:= '0';
         bruttoKum:= '0'; //Immer nettoKum * mitgeliefertem MwSt-Satz
         mwstKum:= '0';
      end
      else begin
         JsPrewData:= TJSONObject(JsDataProforma.Items[frxDataSet.RecNo -1]);
         JsPrewData.TryGetValue<string>('netto', nettoKum);
         nettoKum:= StringReplace(nettoKum,'','',[]);
         nettoKum:= StringReplace(nettoKum,'.','',[rfReplaceAll]);
         JsPrewData.TryGetValue<string>('mwstKum', mwstKum);
         mwstKum:= StringReplace(mwstKum,'','',[]);
         mwstKum:= StringReplace(mwstKum,'.','',[rfReplaceAll]);
         JsPrewData.TryGetValue<string>('brutto', bruttoKum);
         bruttoKum:= StringReplace(bruttoKum,'','',[]);
         bruttoKum:= StringReplace(bruttoKum,'.','',[rfReplaceAll]);
      end;

      Value:= JsData.GetValue<string>(VarName);
      if VarName = 'pricethen begin
         Try
            if (JsData.TryGetValue<string>('price', priceValue)) and
                  (JsData.TryGetValue<string>('qty', qtyValue)) and
                  (StringReplace(priceValue,' ','',[rfReplaceAll]) <> '') and
                  (StringReplace(qtyValue,' ','',[rfReplaceAll]) <> '') then begin
               totalValue:= FloatToStr(StrToFloat(priceValue) * StrToInt(qtyValue));
               nettoKum:= FloatToStr(StrToFloat(nettoKum) + StrToFloat(totalValue));
               JsData.AddPair('total', Format('%2n',[StrToFloat(totalValue)]) + '');
               if (JsData.TryGetValue<string>('mwst', mwst)) and
                  (StringReplace(mwst,' ','',[rfReplaceAll]) <> '') then begin
                  mwstkum:= FloatToStr(StrToFloat(nettoKum) * StrToFloat(mwst));
                  bruttoKum:= FloatToStr(StrToFloat(nettoKum) * (1 + StrToFloat(mwst)));
               end;
            end
            else begin
               JsData.AddPair('total', '');
            end;
            if StringReplace(Value,' ','',[rfIgnoreCase, rfReplaceAll]) <> 'then begin
               Value:= Value + '';
            end;
            JsData.AddPair('netto', Format('%2n',[StrToFloat(nettoKum)]) + '');
            JsData.AddPair('brutto', Format('%2n',[StrToFloat(bruttoKum)]) + '');
            JsData.AddPair('mwstKum', Format('%2n',[StrToFloat(mwstKum)]) + '');
            if (StringReplace(mwst,' ','',[rfReplaceAll]) = '') then begin //Nur zum Anzeigen unterhalb der Tabelle
               JsPrewData.TryGetValue<string>('mwst', mwst);
               JsData.RemovePair('mwst');
               JsData.AddPair('mwst', mwst);
            end;
         Except
            Value:= '';
         End;
      end;

   end;
end;
Was dann rauskommt sieht so aus, wie in dem Bild.

Vielen Dank
Patrick
Angehängte Grafiken
Dateityp: jpg Result_FR.jpg (48,4 KB, 18x aufgerufen)
Patrick
  Mit Zitat antworten Zitat
 


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 00:39 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