Re: [firebase-br] Erro ao comparar parâmetro com string vazia

Tecnobyte Informática temp2 em tecnobyte.com.br
Ter Abr 24 13:00:20 -03 2007


Não, o campo código é VARCHAR(15).

Atenciosamente.

Daniel P. Guimarães
Tecnobyte Informática

Quer uma agenda no seu computador?
Pegue sua cópia GRÁTIS em www.tecnobyte.com.br


----- Original Message ----- 

Provavelmente pe o Campo Codigo é do tipo Numerico..

Tente utiliza assim:

WHERE (:CodigoInicial = 0 OR Produto.Codigo >= :CodigoInicial)

E passe assim:

Q.ParamByName('CodigoInicial').AsString := 0;
Q.ParamByName('CodigoInicial').AsString := 1;

[]´s

Kléber Caneva

----- Original Message ----- 

Estou obtendo um erro ao tentar usar este esquema abaixo para passar
parâmetros opcionais ao Firebird.

WHERE (:CodigoInicial = '''' OR Produto.Codigo >= :CodigoInicial)

Se eu passo uma string vazia para o parâmetro CodigoInicial o SQL roda
normalmente, mas se passo qualquer outra string ocorre um erro.

Q.ParamByName('CodigoInicial').AsString := ''; { Executa normal }
Q.ParamByName('CodigoInicial').AsString := '1'; { Retorna erro }

A mensagem de erro é esta:

---
Dynamic SQL Error
SQL error code = -303
arithmetic exception, numeric overflow, or string truncation.
---

Alterando o SQL para este abaixo o erro não acontece:
WHERE (:CodigoInicial = CAST('''' AS VARCHAR(1)) OR Produto.Codigo >=
:CodigoInicial)

Isto seria um bug do Firebird?

Estou usando Firebird 2.0 + IBX 6.08 + Delphi 6 + Windows XP SP2.

Atenciosamente.

Daniel P. Guimarães
Tecnobyte Informática
www.tecnobyte.com.br





Mais detalhes sobre a lista de discussão lista