XData Service Problem


Hello,

I add a Service to my XData Server that should give me back a List of an objekt. If I start the Service from my Application, I get this Error: Erste Gelegenheit f?r Exception bei $77534172. Exception Klasse EXDataRequestoperationError, Status Code 500, Error Code AccessViolation

Here my Server Code:

function TxDataServiceExample.RaumgruppenDesObjektes(aPRUEFUNGSNR,aOBJEKTNR,aPRART: integer;aPRUEFMONAT:string): TList<TTBL_RAUMDATEN>;
var
  lConnection : TFDConnection;
  lMobileAbfrage : TFDQuery;
  lRaumdaten : TTBL_RAUMDATEN;
  lRaumdatenList : TList<TTBL_RAUMDATEN>;
begin
  lMobileAbfrage := TFDQuery.Create(nil);
  with lMobileAbfrage do
    begin
      Connection := dmMain.FDConnectionEntw;
      SQL.Clear;
      SQL.Text := 'select distinct * from TBL_RAUMDATEN WHERE PRUEFUNGSNR =          :PRUEFUNGSNR and OBJEKTNR = :OBJEKTNR and PRART = :PRART and PRUEFMONAT =:PRUEFMONAT ORDER BY RAUMGRUPPE';
      ParamByName('PRUEFUNGSNR').AsInteger := aPRUEFUNGSNR;
      ParamByName('OBJEKTNR').AsInteger := aOBJEKTNR;
      ParamByName('PRART').AsInteger := aPRART;
      ParamByName('PRUEFMONAT').AsString := aPRUEFMONAT;
      Open;
      lRaumdatenList := TList<TTBL_RAUMDATEN>.Create;
      while lMobileAbfrage.Eof do
        begin
          lRaumdaten := TTBL_RAUMDATEN.Create;
          try
            lRaumdaten.ID_RAUMDATEN := lMobileAbfrage.FieldByName('ID_RAUMDATEN').AsInteger;
            lRaumdaten.PRUEFUNGSNR := lMobileAbfrage.FieldByName('PRUEFUNGSNR').AsInteger;
            lRaumdaten.PRUEFMONAT := lMobileAbfrage.FieldByName('PRUEFMONAT').AsString;
            lRaumdaten.RAUMNR := lMobileAbfrage.FieldByName('RAUMNR').AsString;
            lRaumdaten.GEBAEUDE := lMobileAbfrage.FieldByName('GEBAEUDE').AsString;
            lRaumdaten.RAUMGRUPPE := lMobileAbfrage.FieldByName('RAUMGRUPPE').AsString;
            lRaumdaten.FLAECHEGESCHAETZT := lMobileAbfrage.FieldByName('FLAECHEGESCHAETZT').AsFloat;
            lRaumdaten.BEZEICHNUNG := lMobileAbfrage.FieldByName('BEZEICHNUNG').AsString;
            lRaumdaten.ETAGE := lMobileAbfrage.FieldByName('ETAGE').AsString;
            lRaumdaten.NUTZUNGSART := lMobileAbfrage.FieldByName('NUTZUNGSART').AsString;
            lRaumdaten.BODENBELAG := lMobileAbfrage.FieldByName('BODENBELAG').AsString;
            lRaumdaten.GEPRUEFT := lMobileAbfrage.FieldByName('GEPRUEFT').AsInteger;
            lRaumdaten.OBJEKTNR := lMobileAbfrage.FieldByName('OBJEKTNR').AsInteger;
            lRaumdaten.PRART := lMobileAbfrage.FieldByName('PRART').AsInteger;
            lRaumDatenList.Add(lRaumdaten);
          finally
          end;
          lMobileAbfrage.Next;
        end;
      Close;
    end;
  lconnection.close;
  lMobileAbfrage.Free;
  lConnection.Free;
  result := lRaumdatenList;
end;

My Application Code where I want to get the Result of the Service:

    lRGObjektList := TList<TTBL_RAUMDATEN>.Create;
    iMyService := LXDataClient.Service<ITIUSServerService>;
    lRGObjektList := iMyService.RaumgruppenDesObjektes(Pruefungsnr,FObjektNummer,1,Pruefungsmonat);



Hello,

At first sight, I see you are calling:



  lconnection.close;
  lConnection.Free;


Even though you have never assigned anything to variable lConnection.
Create the TFDConnection and assign it to lConnection variable.