Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.423 Beiträge
 
Delphi 7 Professional
 
#6

AW: JSONArray freigeben?

  Alt 24. Dez 2020, 16:12
Vielen Dank... das Brett war doch ein bißchen fest...

Ich hatte es so schon zuvor versucht, bekam aber immer eine Fehlermeldung:
Zitat:
Exception der Klasse EXDATAHttpEntityNotFound mit der Meldung 'Requested Entity does not exist' aufgetreten
Interessanter Weise wurde aber trotzdem alles korrekt durchgeführt.

Ich habe es jetzt so realisiert, dann kommt die Fehlermeldung nicht:
Delphi-Quellcode:
function TTV_CreateNewCustService.Get_CustProp(company_id: integer): TJSONArray;
var Logic: TLogic;
      Query: TFDQuery;
      JSW: TFDBatchMoveJSONWriter;
      BDSR: TFDBatchMoveDataSetReader;
      BMove: TFDBatchMove;
  I: Integer;
begin
   Logic:= TLogic.create;
   Result:= TJSONArray.Create; //Das hier macht den Unterschied, ob die Fehlermeldung kommt oder nicht.
   Set_DBComps(Query, JSW, BDSR, BMove);
   Try
      Query.SQL.Add('select e.* from hlp_einstellungen e '+
                    'where company_id= :c_id');
      Query.ParamByName('c_id').AsInteger:=company_id;
      Get_DataBatch(BMove, Result);
   Finally
      Query.Free;
      JSW.Free;
      BDSR.Free;
      BMove.Free;
      Logic.Free;
   End;
end;
Macht diese Zeile denn bei einem Result Sinn? Result:= TJSONArray.Create;
Vielen Dank und schöne Weihnachten!
Patrick
Natürlich ist das Result:= TJSONArray.Create; sinnvoll, Du willst ja ein Objekt zurückgeben, das muss nun mal erstellt werden.

Könntest das ja auch so machen:
Delphi-Quellcode:
function TTV_CreateNewCustService.Get_CustProp(company_id: integer): TJSONArray;
var // Logic: TLogic; -- Wird nicht benutzt, kann von daher entfallen.
      Query: TFDQuery;
      JSW: TFDBatchMoveJSONWriter;
      BDSR: TFDBatchMoveDataSetReader;
      BMove: TFDBatchMove;
      JA : TJSONArray;
  // I: Integer; -- Wird nicht benutzt, kann von daher entfallen.
begin
   // Logic:= TLogic.create;
   JA := TJSONArray.Create;
   Set_DBComps(Query, JSW, BDSR, BMove);
   Try
      Query.SQL.Add('select e.* from hlp_einstellungen e '+
                    'where company_id = :c_id');
      Query.ParamByName('c_id').AsInteger := company_id;
      Get_DataBatch(BMove, JA);
   Finally
      Query.Free;
      JSW.Free;
      BDSR.Free;
      BMove.Free;
      // Logic.Free;
   End;
   Result := JA;
end;
Nur: Was soll's? Ist nur eine Variabel mehr, die man dann benötigt. Erforderlich ist sie nicht.
  Mit Zitat antworten Zitat