SQL no multi camadas
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
Curtidas 0
Respostas
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.
Utilizando no client
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