Fórum Problemas com InternalCalc #403491

21/06/2011

0

Bom gente, tenho um campo na minha tabela que se chama COMISSAO, este campo é calculado da seguinte forma:
 
 VALORTOTAL * 0.1 

 Até ae tudo bem, então coloquei o código no evento OnCalcFields do CDS e deixei o campo como InternalCalc, porém quando vo executar o Sistema da o erro: name not unique in this context. 
 Então resolvi deixar o campo como fkData mesmo, então o sistema rodou normal, porém ao fazer o Calculo deste campo da estouro de pilho (stack overflow).
 
 O que fazer ?
Ronaldo Lanhellas

Ronaldo Lanhellas

Responder

Posts

21/06/2011

Ronaldo Lanhellas

Este é o codigo para calcular a comissão, dentro dele já tem outros campos sendo calculados também, como o VALOR_PENDENTE:

with DataSet do
  begin
    // Calcula o Valor pendente do Vendedor
    FieldByName('VALOR_PENDENTE').Value := FieldByName('VALOR_A_PAGAR').AsFloat - FieldByName('VALOR_PAGO').AsFloat;

    // Calcula % da Comissão e o Valor da Comissão
    /// //////////////////
    // Se o vendido for menor que 50% então ele só receberá 30% do valor total vendido, se for maior ele recebe 40%
    if ((cdsDistribuicao_Produto.FieldByName('qtdTotalVendido').Value * 100) / cdsDistribuicao_Produto.FieldByName
        ('qtdTotalDistribuido').Value) < 50 then
    begin
      FieldByName('COMISSAOREAL').AsFloat := cdsDistribuicao_Produto.FieldByName('valorTotalVendido').Value * 0.3;
      FieldByName('COMISSAOPERC').ASInteger := 30;
    end
    else
    begin
      FieldByName('COMISSAOREAL').AsFloat := cdsDistribuicao_Produto.FieldByName('valorTotalVendido').Value * 0.4;
      FieldByName('COMISSAOPERC').ASInteger := 40;
    end;
    /// /////////////////////////////////////////////////////////////////////

    // Calcula o valor_a_pagar pelo Vendedor. Com base no : totalVendido - suaComissao
    FieldByName('VALOR_A_PAGAR').Value := cdsDistribuicao_Produto.FieldByName('valorTotalVendido').Value - FieldByName
      ('COMISSAOREAL').Value;
  end;

Responder

Gostei + 0

22/06/2011

Ronaldo Lanhellas

Resolvido !!! 
 Descobri que o Intercalc e o Calculated Fields só funciona em campos que não são "nativos" da minha tabela, ou seja, são criados em tempo de projeto na propria IDE.
Responder

Gostei + 0

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

Aceitar