GARANTIR DESCONTO

Fórum Erro : Arithmetic exception, numeric overflow, or string truncation #401764

25/05/2011

0

Olá pessoal,
Estou usando o Delphi 2006 com o FireBird 2.1, e está ocorrendo o erro  : Arithmetic exception, numeric overflow, or string truncation, quando tento fazer uma pesquisa, usando a Estrutura: DBXpress, com SQLConnection, SQLDataSet, DataSetProvider e ClientDataSet...
Ocorreu o seguinte, tem um campo Integer na Tabela, e conforme a sequencia aumentou, por exemplo se pesquisar 30900, consulta normal, acima de 32000 por exemplo, ocorre o erro.
Continua aceitando a Inclusão de novos registros normal, porém ocorre este problema na Pesquisa, curiosamente estou com o mesmo problema para para fazer pesquisa com campo do tipo VARCHAR, usando o LIKE ultrapassando 8 caracteres...
Alguém já viu este problema, poderia ser alguma DLL para atualizar?
Desde já obrigado pela Atenção,
José Aparecido


Jose Aparecido

Jose Aparecido

Responder

Posts

25/05/2011

Rafael Mattos

vc alterou o tamaho no banco de dados desse campo ?



pq isso é estouro de campo.
Responder

Gostei + 0

27/05/2011

José Aparecido

Olá, obrigado pelo retorno, demorei de verificar porque confundi o E-Mail que estava para contato...   Quanto a este problema que está ocorrendo, acredito que o problema não está no Banco e sim no acesso ao mesmo. Não houve nehuma alteração na tablela, tanto que continua aceitando novas inclusões normal, o problema está na com pesquisas, direto pelo Banco, pelo IBOConsole por exemplo, funciona normal, o problema está quando acesso pela aplicação...   Apesar da mensagem dá a entender que é estouro de campo, mas não é, porque também não estou conseguindo fazer pesquisa com LIKE de um campo VARCHAR(40), quando coloco mais de 8 caracteres na pesquisa, também ocorre erro.   De qualquer forma, obrigado pelo retorno...          
Responder

Gostei + 0

27/05/2011

Rafael Mattos

posta a parte da pesquisa do seu código
Responder

Gostei + 0

31/05/2011

José Aparecido

Oi Rafael, ainda não tinha visto sua mensagem, devido estar o retorno num e-mail que não estou verificando com muita frequencia, vou alterar no site...   Enfim, você pediu pra postar o código, vou tentar colocar as partes aqui...   Não sei se você está acostumado com uma das formas que trabalhamos com Query por aqui, vou tentar descrever abaixo o código...   //Chamada para a Query
with dmClientMovimento.cds_Lote do
  begin
    Close;
    //Params.ParamByName('pTipoPesq').AsInteger := 6;
    //Params.ParamByName('pCodigo').AsInteger   := dmClientCadastro.cds_Prospect.FieldByName('PRSCODIGO').AsInteger;     Params.ParamByName('pTipoPesq').AsInteger := 4;
    Params.ParamByName('pDescricao').AsString := dmClientCadastro.cds_Prospect.FieldByName('PRSFONE').AsString;
    Open; //Código Query ( SQLDataSet )
SELECT LO.*
FROM TMLOTE LO
WHERE  ( (:pTipoPesq = 1 AND LO.TURCODIGO =:pCodigo AND LO.LOTNUMERO =:pCodLote AND LO.STFCODIGO =:pStatus)
OR           (:pTipoPesq = 2 AND LO.OPECODIGO =:pCodigo AND LO.LOTNUMERO =:pCodLote AND LO.STFCODIGO =:pStatus)
OR           (:pTipoPesq = 3 AND LO.LOTDATAAG <= :pData AND LO.OPECODIGO = :pCodigo  AND LO.STFCODIGO = :pStatus)
OR           (:pTipoPesq = 4 AND LO.LOTFONE =:pDescricao)
OR           (:pTipoPesq = 5 AND LO.LOTNOME LIKE :pDescricao)
OR           (:pTipoPesq = 6 AND LO.PRSCODIGO =:pCodigo)
OR           (:pTipoPesq = 7  AND LO.OPECODIGO = :pCodigo  AND LO.STFCODIGO = :pStatus AND ( ( LO.LOTDATAAG < :pData ) OR (  LO.LOTDATAAG = :pData AND LO.LOTHORAAG <= :pHora ) ) )
OR           (:pTipoPesq = 8 AND LO.OPECODIGO = :pCodigo  AND LO.STFCODIGO = :pStatus)
OR           (:pTipoPesq = 0) )
ORDER BY  LO.LOTDATAAG,  LO.LOTHORAAG,  LO.LOTNUMERO
Então, todas as Opções estão funcionando, com a excessão do que expliquei ocorre o Erro e excessão..., por exemplo a Opção = 4, funciona com números até determinada faixa de valor, superior a este, dá o erro que estamos discutindo...   A Opção que tem a Clausula LIKE, só aceita até 8 Caratacteres, acima disso também dá erro...   Obs.: O Campo da Pesquisa com LIKE ( Opção 5 ) é um VARCHAR(40) ;           O Campo Pesquisado na Opcação 6, é TIpo Integer...   Bom, é isso, obrigado pela atenção,   José Aparecido  
Responder

Gostei + 0

31/05/2011

Emerson Nascimento

não será o 'comprimento' do parâmetro ?
Responder

Gostei + 0

01/06/2011

Jose Aparecido

Olá pessoal, esta seria uma dica interessante, no FB 1.5 nunca tive problemas com isso, no caso de campo VARCHAR, passar o parâmetro como String, mas agora no FB 2.1 pode ser que tenha mais alguns cuidados... vou fazer uma pesquisa "simples" para verificar isso...
Obrigado,
José Aparecido
Responder

Gostei + 0

16/06/2014

Guilherme Silva

Cara eu estudo java e quando dá esse erro, é por que houve um erro de aritmética mesmo, como por exemplo dividir 4 por 0.
Responder

Gostei + 0

16/06/2014

Guilherme Silva

Não entendo nada de delphi, mas faz esse teste troca o 0 por 1.
Responder

Gostei + 0

22/09/2015

Denis Portas

Verifique o tamanho do parâmetro que você está mandando na abertura do clientdataset, já vi muitos desenvolvedores concatenado % para Like porem o tamanho do parâmetro não comporta mais um carácter.
Responder

Gostei + 0

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

Aceitar