Fórum SQL no multi camadas #392562

16/12/2010

0

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

Responder

Posts

16/12/2010

Felipe Caputo

  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;

Responder

Gostei + 0

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

Aceitar