Usando um servidor REST DataSnap com um aplicativo

17/03/2016

3

Estou usando o DataSnap Rest Client Module e tenho uma função que me retornar um TDataSet, como eu poderia pegar o retornar para exibir o resultado?

Usando Delphi 2010

função no servidor:
    function PegaFaturamento(Vendedor: Double; Cliente: Double; Produto: string; Inicio: string; Fim: string; out Mensagem: string; const ARequestFilter: string = ''): TDataSet;


//função no servidor
function TServerMethodsAtualizacaoClient.PegaFaturamento(Vendedor: Double; Cliente: Double; Produto: string; Inicio: string; Fim: string; out Mensagem: string; const ARequestFilter: string): TDataSet;
begin
  if FPegaFaturamentoCommand = nil then
  begin
    FPegaFaturamentoCommand := FConnection.CreateCommand;
    FPegaFaturamentoCommand.RequestType := 'GET';
    FPegaFaturamentoCommand.Text := 'TServerMethodsAtualizacao.PegaFaturamento';
    FPegaFaturamentoCommand.Prepare(TServerMethodsAtualizacao_PegaFaturamento);
  end;
  FPegaFaturamentoCommand.Parameters[0].Value.SetDouble(Vendedor);
  FPegaFaturamentoCommand.Parameters[1].Value.SetDouble(Cliente);
  FPegaFaturamentoCommand.Parameters[2].Value.SetWideString(Produto);
  FPegaFaturamentoCommand.Parameters[3].Value.SetWideString(Inicio);
  FPegaFaturamentoCommand.Parameters[4].Value.SetWideString(Fim);
  FPegaFaturamentoCommand.Execute(ARequestFilter);
  Mensagem := FPegaFaturamentoCommand.Parameters[5].Value.GetWideString;
  Result := TCustomSQLDataSet.Create(nil, FPegaFaturamentoCommand.Parameters[6].Value.GetDBXReader(False), True);
  Result.Open;
  if FInstanceOwner then
    FPegaFaturamentoCommand.FreeOnExecute(Result);
end;




//pegar resultado na aplicação
procedure TfrmTeste.Button2Click(Sender: TObject); 
var 
  Mensagem:String; 
  temp :TServerMethodsAtualizacaoClient; 
  cliente :TDataSet; 
begin 
   temp := TServerMethodsAtualizacaoClient.Create(ClientModule.DSRestConnection1); 

  try 
   cliente := temp.PegaFaturamento(1,StrToFloat(Edit1.Text),Edit2.Text,Edit3.Text,Edit4.Text,Mensagem,''); 
   //pegar o resultado desta consulta 
  finally 
   temp.Free; 
  end; 

end;
Responder