ClientDataSet alguém me ajude

Delphi

29/11/2011

Olá!

Montei uma tela para aplicar descontos e promoções nos produtos;

Estou utilizando os seguintes componentes: ZQuery, DataSetProvider, ClientDataSet, DataSource e o DBGrid.

Estou utilizando o DataSetProvider apenas para caregar os dados no ClientDataSet mais rápido, pois além de gravar os dados dos campos promoção e Descontos (Min. e Máx.), preciso gravar támbem os dados da promoção em duas tabelas (PromocaoCab e PromocaoItens), por isso não utilizo o ClientDataSet para gravar no BD, utilizo ele apenas para armazenar temporáriamente os registros que enviarei para o BD tudo de uma vez.

Na nessa tela tenho um botão para simular os descontos e as promoções antes de aplicar, pois nem todos os produtos obterão um valor padronizado, por tanto estou habilitando a possibilidade de o usuário poder alterar, também, registro a registro a gosto dele.

Gostaria de saber se há algum comando para que eu aplique a simulaçao no ClientDataSet de forma mais rápida e simplificada, pois estou utilizando o seguinte comando para simular os preços:

CDS.FIRST;
CDS.EDIT;
while not CDS.EOF do
begin
CDS.FIELDBYNAME(PRCPROMOCAO).ASFLOAT := CDSPRCPROMOCAO.ASFLOAT - (CDSPRCPROMOCAO.ASFLOAT * ALIQPROMO.VALUE / 100);
CDS.NEXT;
end;
CDS.POST;

Existe alguma forma mais simples para aplicar esse cálculo em todos os registros listados no ClientDataSet de uma vez, como um UPDATE, por exemplo?

Agradeço desde já qualquer ajuda.
Vagner Almeida

Vagner Almeida

Curtidas 0

Respostas

Carlos Júnior

Carlos Júnior

29/11/2011

Amigo,

Para gravar no banco as informações do ClientDataSet basta você executar o comando Cds.ApplyUpdates(0);

at++

GOSTEI 0
Vagner Almeida

Vagner Almeida

29/11/2011

O conteúdo do ClientDataSet são de duas tabelas, para gravar no BD, não é o problema. Gostaria de saber se há algum código que eu possa utilizar para atualizar (FAZER AS SIMULAÇÕES) dentro do CDS, como um update de um sql, por exemplo, que substitua o comando que eu exemplifiquei.
GOSTEI 0
Wilson Junior

Wilson Junior

29/11/2011

Se for atualizar os dados de dentro de um ClientDataSet, deve ser feito somente através de LOOP.

Espero ter colaborado.
GOSTEI 0
Vagner Almeida

Vagner Almeida

29/11/2011

vlw.
GOSTEI 0
Wilson Junior

Wilson Junior

29/11/2011

Não esqueça de finalizar o tópico.
GOSTEI 0
POSTAR