Fórum ClientedataSet Agregate com condicao #470379

18/02/2014

0

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

Responder

Posts

18/02/2014

Francisco Costa

NO LUGAR DE CAMPOS AGREGATE UTILIZE CAMPOS CALCULATED.

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

Gostei + 0

18/02/2014

Volmir Santos

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
Responder

Gostei + 0

18/02/2014

Francisco Costa

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;
Responder

Gostei + 0

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

Aceitar