ClientedataSet Agregate com condicao

Delphi

18/02/2014

Gostria de saber se tem como eu criar um campo do tipo Agregate e atribuir uma condicao a ele por exemplo gostaria de somar o total do pedido onde existem varios itens porem pode ter itens que estajam cancelados mas estes cancelados nao podem ser somados no total do pedido
Ex: SUM(vl_total) where cancelado<>true

mas isso nao funciona
gostaria de saber como deve ser tratado isso ou se existe uma outra forma de eu mostrar este valor
Grato
Volmir
Volmir Santos

Volmir Santos

Curtidas 0

Respostas

Francisco Costa

Francisco Costa

18/02/2014

NO LUGAR DE CAMPOS AGREGATE UTILIZE CAMPOS CALCULATED.

FAÇA A CONDIÇÃO NO EVENTO ONCALCFIELDS DO CLIENTDATASET
GOSTEI 0
Volmir Santos

Volmir Santos

18/02/2014

NO LUGAR DE CAMPOS AGREGATE UTILIZE CAMPOS CALCULATED.

FAÇA A CONDIÇÃO NO EVENTO ONCALCFIELDS DO CLIENTDATASET


Fiz usando o campo calculate mas nao funcionou ele me retornou apenas o ultimo item inserido
fiz ASSIM
procedure TFPed_Saida.CDProdCalcFields(DataSet: TDataSet);
begin
if CDProdcancelado.AsBoolean <> True then
CDProdTot_credito.AsFloat:=CDProdTot_credito.AsFloat + CDProdCredito_vend.AsFloat;
end;

EASSIM
procedure TFPed_Saida.CDProdCalcFields(DataSet: TDataSet);
begin
if CDProdcancelado.AsBoolean <> True then
CDProdTot_credito.AsFloat:= CDProdCredito_vend.AsFloat;
end;

O FIELD Tot_credito É DO TIPO CALCULATE
GOSTEI 0
Francisco Costa

Francisco Costa

18/02/2014

tente assim.
procedure TFPed_Saida.CDProdCalcFields(DataSet: TDataSet);
var
x : currency;
begin
x := 0;
with CDProd do
begin
first;
while not eof do
begin
if not (cancelado.AsBoolean) then
x := x + CDProdCredito_vend.AsFloat;
Next;
end;
end;
CDProdTot_credito.AsFloat:= x;
end;
GOSTEI 0
POSTAR