GARANTIR DESCONTO

Fórum Retornar TClientDataSet.data via http.get no delphi 2010 #386391

15/09/2010

0

Parceiros,
preciso fazer algumas consultas dinâmicas na aplicação cliente mas não desejo utilizar o dbexpress.
Utilizando Rest eu consigo integrar as aplicações de diferentes linguagens mas não estou conseguindo passar o conteúdo "Data" do clientdataset via JSON.

Função do servidor:


classe TDataCds

type
  TDataCds = class(TDTOPadrao)
  private
    FID: Variant;
  published
    property Id: Variant read FID write FID;
  end;

function TServerMethods.RetornaOleVariant(pSQL: string): TJSONArray;
var DSP:TDataSetProvider;
    CDS:TClientDataSet;
    obj:TDataCds;
begin

  Query := TZQuery.Create(nil);
  DSP := TDataSetProvider.Create(nil);
  CDS := TClientDataSet.Create(nil);

  try
    Query.Connection := ServerContainer.ZConn;
    Query.SQL.Text := 'select * from tb_grupo_produto';//pSQL;

    DSP.DataSet := Query;
    CDS.SetProvider(DSP);

    result := TJSONArray.Create;

   try
    CDS.Open;
    obj := TDataCds.Create;
    obj.Id := CDS.Data;
    result.AddElement(obj.ObjectToJSON<TDataCds>(obj));
    obj.Free;
   except
    result := nil;
   end;

  finally
    CDS.Close;
    CDS.free;
    DSP.free;
    Query.Free;
  end;

end;



no cliente ...

function RetornaOleVariant(pSQL:string):OleVariant;
var
  dataStream: TStringStream;
  jObj: TJSONObject;
  jPair: TJSONPair;
  jItems: TJSONArray;
  jItem: TJSONValue;
  i: Integer;
  obj:TDataCds;
begin

  try
      dataStream := TStringStream.Create;
      DMCliente.http.Get(DMCliente.url+'TServerMethods/RetornaOleVariant/'+
       pSQL, dataStream);

      jObj := TJSONObject.Create;
      jObj.Parse(dataStream.Bytes, 0);
      jPair := jObj.Get(0);
      jItems := TJSONArray(TJSONArray(jPair.JsonValue).Get(0));


      For i := 0 to jItems.Size - 1 do
      begin
        jItem := jItems.Get(i);
        obj := TDataCds.JSONToObject<TDataCds>(jItem);

        result := obj.Id;
      end;

  finally
    dataStream.Free;
    jObj.Free;
  end;

end;




quando uso a função a propriedade 'ID' fica igual a '1'


Minha idéia é utilizar essa propriedade e atribuir a um clientdataset.data de consulta.


Alguém sabe como resolver isso?
Vórtice-ti

Vórtice-ti

Responder

Posts

21/09/2010

Vórtice-ti

Alguém sabe como resolver isso?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar