Uso correto de ClientDataSet, DataSource, ADOQuery e ADODataSet

Delphi

13/09/2011

Seguinte queria que os mais experientes me dessem um dica de programação.
Não sou avançado em Delphi mais quando preciso recorro aos forum e sites na net e consigo o que quero.

Bom tenho programado há algum tempo e uso programação multicamadas ou 3 camadas, sempre banco de dados SQL Server, hoje estou usando o 2008 as vezes uso alguma coisa em MySQL que não é o caso que vou citar.
Meus sistemas startam os servidores que tem os componentes ADOQuery e ADODataSet.
Dentro do executável do cliente tenho um DataModule com os componentes ClientDataSet, DataSource. até ai tudo tranquilo, minha questão é:

Quando vou chamar um insert em uma tabela uso o seguinte modo:

procedure TfrmCadAluno.btnIncluirClick(Sender: TObject);
begin
  cdsPessoa.Close;
  cdsPessoa.CommandText := ('Select * From Pessoa Where 1=0');
  cdsPessoa.Open;
  cdsPessoa.Append;

  cdsPessoa.FieldByName('DtCadastro').Value := Date;
  cdsPessoa.FieldByName('EstCivil').Value := '1';

.... continua o codigo ..

end;

isso sempre em um botão inserir no form Cadastro de pessoas (frmCadPessoa). o cdsPessoa (ClientDataSet) coloquei no proprio form junto com o dtsPessoa (DataSource), os componentes estão ligados direitinho estão funcionando corretamente.

Quando o cliente usa o botão alterar coloco simplesmente um cdsPessoa.Edit;


ao fazer uma query no banco sempre uso a seguinte maneira:

  SQL1 := '' ;
  SQL1 := SQL1 + 'Select * from Pessoa'+#13;
  SQL1 := SQL1 + ' Where Cod_Empresa = '+IntToStr(CodEmpresa) +#13;
  SQL1 := SQL1 + ' and Nome like '''+IntToStr(cdsPadrao.FieldByName('Cod_Pessoa').Value)+ '%'''+#13;
  cdsVerifica.Close;
  cdsVerifica.CommandText := (SQL1);
  cdsVerifica.Open;

ao deletar um registor uso:

  SQL1 := '' ;
  SQL1 := SQL1 + 'Delete From Pessoa'+#13;
  SQL1 := SQL1 + ' Where Cod_Pessoa = '+IntToStr(cdsProcura.FieldByName('Cod_Pessoa').Value);
  cdsVerifica.Close;
  cdsVerifica.CommandText := (SQL1);
  cdsVerifica.Execute;

Essa maneira que trabalho é a correta? ou se não é a correta pode ser usada?
Tem como melhorar?
Como posso ganhar performace no sistema?
Queria alguns exemplos de como poderia ficar baseado nos exemplos que dei.

Aguardo a ajuda de vocês, abraços...


Nilson Alvernaz

Nilson Alvernaz

Curtidas 0
POSTAR