ClientedataSet Agregate com condicao
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
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
Curtidas 0
Respostas
Francisco Costa
18/02/2014
NO LUGAR DE CAMPOS AGREGATE UTILIZE CAMPOS CALCULATED.
FAÇA A CONDIÇÃO NO EVENTO ONCALCFIELDS DO CLIENTDATASET
FAÇA A CONDIÇÃO NO EVENTO ONCALCFIELDS DO CLIENTDATASET
GOSTEI 0
Volmir Santos
18/02/2014
NO LUGAR DE CAMPOS AGREGATE UTILIZE CAMPOS CALCULATED.
FAÇA A CONDIÇÃO NO EVENTO ONCALCFIELDS DO CLIENTDATASET
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
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;
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