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

Magno System magnosysteminformatica em gmail.com
Sex Jan 8 09:14:33 -03 2010


Não uso FIBPLUS, mas tenho notado nos componentes em geral que VALUE retorna 
null em campo nulo, uma vez que você se refere ao valor do registro (que é 
nulo) dentro do banco de dados.

O que eu faço e tem dado certo, é usar ASINTEGER e ASCURRENCY, no seu caso o 
segundo, que em campos nulos retorna zero. Faça um teste.

----- Original Message ----- 
From: "Alexandre Trindade" <alexandre em habitus.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, January 08, 2010 7:45 AM
Subject: [firebase-br] IBX x FIB - TFIBBCDField - "Could not convert 
variantof type (null) into type (currency)"


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!!
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista