SQL no multi camadas

Delphi

16/12/2010

Boa noite a todos,estou ingressando ao multi camadas agora, e aprendi muita coisa ja, entretanto gostaria de saber como faço para executar uma sql em um sqldataset no servidor, lembrando que, gostaria q ela fosse dinamica, ou seja, conseguisse altera-la em tempo de execuçãograto pela atençao
Bruno Mendonça

Bruno Mendonça

Curtidas 0

Respostas

Felipe Caputo

Felipe Caputo

16/12/2010

  Bom dia. Usar sql em data snap precisa de certos cuidados. no caso eu prefiro trabalhar com uma function que retorna os dados para um clientdataset da seguinte forma.


Function TsrvModUtil.RetornaData(ComandoSQL : String) : Data;

var

  sql : TSqlDataSet;

  dsp : TDataSetProvider;

  cds : TClientDataSet;

begin

  try

    sql : TSqlDataSet.Create(nil);

    dsp : TDataSetProvider.Create(nil);

    cds : TClientDataSet.Create(nil);

    sql.getmetadata := False;

    sql.sqlConection := SuaConexao;

    sql.CommandText := ComandoSql;

    dsp.DataSource := sql;

    dsp.Name := 'dspRetorno';

    cds.ProviderName := 'dspRetorno';

    cds.open;

    result := cds.data;

  finally

    freeandnil(cds);

    freeandnil(sql);

    freeandnil(dsp);

  end;

end;



Utilizando no client


Procedure TForm1.Button1Click(Sender:TObject);

var

  server : TsrvModUtil; //Considerando q esse seja o seu ServerModule que a função foi feita.

  cds : TclientDataSet;

begin

  try

    cds := TClientDataSet.Create(nil);

    server := TsrvModUtil.Create(Conexao.DBXConection);

    cds.data := server.RetornaData('Select * from usuarios'); // aí é só usar cds.fields[i] e ir pro abraço.

  finally

    freeandnil(cds);

    freeandnil(server);

  end;

end;

GOSTEI 0
POSTAR