quarta-feira, 27 de julho de 2011

O pernicioso null em campo numérico e a conversão em inteiro (Cint) no ASP

Ficamos perplexos com um problema em ASP ao se listar campos de números inteiros que podem ou não estar preenchidos.

O que "disse" a consulta



O campo Diâmetro é numérico, no entanto pode ou não estar preenchido. O programador está testando, em uma consulta (query), se o mesmo está em uma faixa de valores fornecidos (Expr1 e Expr2).

Na execução, vem a mensagem:

Executamos a consulta, fornecendo dois valores e dando o OK, e aparece a mensagem:


Isto ocorre porque o VB não consegue converter nulo (Null) em inteiro.

O teste com IsEmpty (ÉVazio)

Foi feito o teste com a função "IsEmpty" que testa se o campo está vazio.


No entanto, para campos preenchidos ou não a consulta apresentou o resultado:


E qual a solução para se testar a faixa de valores ?

Para resolver o problema, concatena-se um zero à esquerda (que não altera em nada o valor, tanto do Nulo quanto de qualquer número) do campo de Diâmetro:

Ampliando:


E eis que obtemos sucesso. Veja a listagem sem a condição de faixa de valores: