[firebase-br] IBX x FIB - TFIBBCDField - "Could not convert variant of type (null) into type (currency)"

Alexandre Trindade alexandre em habitus.com.br
Sex Jan 8 07:45:46 -03 2010


Pessoal, estou com um problema...

Antes eu usava o IBX para acessar o firebird, mas devido aos problemas de incompatibilidade com as novas versoes do firebird, eu mudei para o FIBPlus.

Na migracao, os campos TLargeintField devem ser modificados para TFIBBCDField.

No meu sistema eu tenho, por exemplo, essa operacao:

var Total: TCurrency;
begin
    Total := (qryItensPRECO.Value * qryItensQTD.Value) - qryItensDESCONTO.Value;
end

Onde PRECO, QTD e DESCONTO sao NUMERIC(18,2), me obrigando portanto a usar um TFIBBCDFIeld;

O problema é que com o antigo TLargeintField a propriedade "Value" é um numero real, e com o TFIBBCDField é um Variant. E quando o campo DESCONTO for null, Value sera null também em vez de ZERO, gerando o erro:

"Could not convert variant of type (null) into type (currency)"

Pergunto aos amigos da lista: Existe uma saida para mim ou terei que testar em todo o meu programa se VarIsNull(qryItensDESCONTO.Value) antes de fazer as operacoes? 

Obs: Também nao quero usar coalesce em cada uma das centenas de consultas que o meu sistema tem.

MUITO OBRIGADO E FELIZ 2010!!


Mais detalhes sobre a lista de discussão lista