Fórum Erro Arithimetic exception,numeric overflow or string... #57518

22/12/2006

0

Olah pessoal, que erro eh esse?
[color=red:1b1d58db30]ARITHIMETC EXCEPTION, NUMERIC OVERFLOW, OR STRING TRUNCATION[/color:1b1d58db30]

[b:1b1d58db30]Estou usando o Firebird 2.0
Lembrando que uso o CharSet Win1252[/b:1b1d58db30]

Estou usando esse codigo e esta dando o erro acima
with dm.Qsaida do
begin
   SQL.clear;
   dm.qsaida.Close;
   sql.add(´ Select * from saidas ´);
   sql.add(´ where cnpjempresa starting:p_cnpjempresa and ano starting:p_ano order by sequencia desc ´);
   parambyname(´p_cnpjempresa´).asstring:=label1.caption;
   parambyname(´p_Ano´).AsString:=label2.Caption;
   open;
   DataSource1.DataSet:=DM.Qsaida;
   //eNR.Caption := IntToStr(dm.QSAIDA.RecordCount);
end;


Outro detalhe isso soh esta ocorrendo num form em outro no mesmo programa funciona sem problemas, os dois carrego a SQL como mostrei acima.

Tambem a SQL soh abre depois que clico em um Treeview aonde tem os nomes de empresas qeu seleciono para jogar em dois labels, mais logo no primeiro clique no treeview ja ocorre o erro, e se eu persistir no erro ele acaba mostrando a SQL, porem somente depois de mostrar o erro.

Grato ajuda de todos
Adriano


Adriano_servitec

Adriano_servitec

Responder

Posts

22/12/2006

Emerson Nascimento

não consegui entender o porquê do erro, mas percebi algo que deve ser alterado no seu código. você está limpando a instrução SQL possivelmente com a query aberta. corrija isso:
with dm.Qsaida do
begin
   close; // feche a query
   sql.clear; // depois "limpe" a instrução
   sql.add(´ Select * from saidas ´);
   sql.add(´ where cnpjempresa starting :p_cnpjempresa and ano starting :p_ano order by sequencia desc ´);
   parambyname(´p_cnpjempresa´).asstring:=label1.caption;
   parambyname(´p_Ano´).AsString:=label2.Caption;
   open;
   DataSource1.DataSet:=DM.Qsaida;
   //eNR.Caption := IntToStr(dm.QSAIDA.RecordCount);
end;



Responder

Gostei + 0

22/12/2006

Adriano_servitec

Olah Emerson, ainda nao deu certo, mais tambem neste codigo esta dando o mesmo erro

procedure TForm6.BitBtn10Click(Sender: TObject);
begin
if application.messagebox(PChar(´Deseja Gravar esta Nota?´), PChar(´Incluir Dados´+Self.Caption),MB_IConquestion +MB_YesNo)=IDYES then
begin

with dm.QENTRADA do
begin
   close;
   SQL.clear;
   sql.add(´ Insert Into ENTRADA (CHAVE, cnpjempresa, ano, CNPJE, CF, codigoF, basecalculo, txipi, ipi, descr, hrlcto, data) ´);
   sql.add(´ Values (:CHAVE, :cnpjempresa, :ano, :CNPJS, :CF, :codigoF, :P_valor, :taxa, :ipi, :descr, :hrlcto, :data) ´);

   ParamByName(´chave´).AsString:=label22.caption;
   ParamByName(´cnpjempresa´).AsString:=label20.caption;
   ParamByName(´ano´).AsString:=label21.caption;
   ParamByName(´cnpjs´).AsString:=edit1.Text;
   ParamByName(´cf´).AsString:=Edit3.Text;
   ParamByName(´codigof´).AsString:=Maskedit2.Text;
   ParamByName(´descr´).Value:=dbedit6.Text;

   svalor := stringreplace(jvedit1.text, ´.´, ´´, [rfReplaceAll]);
   svalor := stringreplace(svalor, ´,´, ´.´, [rfReplaceAll]);

   ParamByName(´P_valor´).Value:=sValor;

   ParamByName(´taxa´).AsString:=Edit3.Text;

   svalor2 := stringreplace(jvedit2.text, ´.´, ´´, [rfReplaceAll]);
   svalor2 := stringreplace(svalor2, ´,´, ´.´, [rfReplaceAll]);

   ParamByName(´IPI´).Value:=sValor2;

   ParamByName(´hrlcto´).Value:=Time;
   ParamByName(´data´).Value:=Date;
try
   ExecSQL;
   dm.TRentrada.Active:=true;
   dm.TRentrada.Commit;
   //**********ATUALIZAR TABELAS**************
   close;
   SQL.clear;
   sql.add(´ Select * from entrada ´);
   sql.add(´ where cnpjempresa =:p_cnpjempresa and ano =:p_ano order by sequencia desc ´);
   parambyname(´p_cnpjempresa´).asstring:=label20.caption;
   parambyname(´p_Ano´).AsString:=label21.Caption;
   eNR.Caption := IntToStr(dm.Qentrada.RecordCount);
   dm.qentrada.open;
   //eNR.Caption := IntToStr(dm.QSAIDA.RecordCount);

   TrataButtons;
   BitBtn9.setfocus;
  
   sbar.SimpleText:=´Dados Incluidos´;
   jvedit1.text:=´´;

except
   on E:Exception do
begin
   dm.TRentrada.RollBack;
   sbar.SimpleText:=´Abortado´;
   ShowMessage(´Falha na Inclusão dos Dados!´#1310´ Mensagem: ´+E.Message);
end;
end;
end;
end;
end;



Responder

Gostei + 0

22/12/2006

Emerson Nascimento

esse erro pode acontecer em duas situações (que eu saiba):

1 - quando você tenta gravar num campo um valor maior do que ele pode comportar. por ex.: tentar gravar ´JOSE´ num campo CHAR(1)
2 - quando você utiliza acentos numa string, mas o COLLATE utilizado no banco de dados não suporta acentos.


Responder

Gostei + 0

22/12/2006

Adriano_servitec

esse erro pode acontecer em duas situações (que eu saiba): 1 - quando você tenta gravar num campo um valor maior do que ele pode comportar. por ex.: tentar gravar ´JOSE´ num campo CHAR(1) 2 - quando você utiliza acentos numa string, mas o COLLATE utilizado no banco de dados não suporta acentos.


Sim realmente na hora de gravar tinha um campo com o varchar menor que o que ia ser gravado (falta de atençao) :oops:

Mais no primeiro post ainda nao entendi o motivo do erro, Uso em todas tabelas CharSet Win1252 e a maioria do collate win1252 e alguns Win_PTBR


Responder

Gostei + 0

27/12/2006

Adriano_servitec

Continuando...

Pessoal, bom dia, estou com problemas ao clicar na barra de um DBGrid, aparece o seguinte erro: [color=red:0b2b05c3cc][b:0b2b05c3cc]white of address 4D4F43000[/b:0b2b05c3cc][/color:0b2b05c3cc]

Mais isso soh ocorre dentro do dbgrid quando vou clicar para mostrar os dados contidos nele. Depois de tanto ter que usar o F9 para ir adiante apareçe outra mensagem: [color=red:0b2b05c3cc][b:0b2b05c3cc]invalid pointer operation[/b:0b2b05c3cc][/color:0b2b05c3cc]

Vi casos parecidos como o meu na hora de fechar ou abrir algum form.
o erro EAccessViolation acontece quando vc tenta abrir algo q nao foi criado ainda.. utilizar algun unit q nao esta aberta algo assim
Mais no meu caso ja esta dentro do form acontece somente quando clico dentro do dbgrid.

Mais antes deste erro ainda tenho um treeview que tem o nome das empresas e toda vez que clico em cima de uma empresa para abrir aparece este erro
[color=red:0b2b05c3cc]ARITHIMETC EXCEPTION, NUMERIC OVERFLOW, OR STRING TRUNCATION[/color:0b2b05c3cc] :(
Este erro refere-se
[b:0b2b05c3cc]1 - quando você tenta gravar num campo um valor maior do que ele pode comportar. por ex.: tentar gravar ´JOSE´ num campo CHAR(1)
2 - quando você utiliza acentos numa string, mas o COLLATE utilizado no banco de dados não suporta acentos.[/b:0b2b05c3cc]Mais nao achei nenhum problema tanto com o collate quanto com tamanho do campo. Inclusive uso o mesmo codigo em outro form do mesmo projeto sem ter problemas.

Ja postei sobre este erro aqui no forum na parte Banco de Dados, mais ninguem respondeu, agora sinto que esse erro esta agravando os outros.

Curioso eh que isso soh ocorre com o Delphi ligado, se eu sair dele e usar o programa nao da o erro. :?:


Responder

Gostei + 0

28/12/2006

Adriano_servitec

Bom pessoal, pelo visto acho que o problema eh esse
[color=red:af18e5f0cf]invalid pointer operation[/color:af18e5f0cf] aprece quando voce esta utilizando algum tipo de Estrutura de Dados onde se manipulam [color=green:af18e5f0cf]ENDEREÇOS DE MEMÓRIA.[/color:af18e5f0cf]Porem, antes de exibir um erro na manipulação de Memória, é apresentada uma mensagem que indica onde aconteceu a Violação do Endereço de Memória, que pode ser essa mensagem que apareceu. Normalmente as violações de memória são captadas pelo sistema operacional, porem algumas envolvendo ´ponteiros´ não chegam a ser percebidas, somente sendo capturadas pelo TRY..EXCEPT ou quando o Delphi esta Aberto.


Pois testei o mesmo projeto em outro computador e o erro nao ocorre.

Agora fica a pergunta: O que tem haver com [color=green:af18e5f0cf]ENDEREÇOS DE MEMÓRIA.[/color:af18e5f0cf], o que eh isso?

Algo com memoria do micro?
Aonde fiz o projeto foi num computador com 128MB de memoria e testei o mesmo projeto em outro micro com 256MB de memoria. Eh isso o problema? :?: :?: :?:


Responder

Gostei + 0

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

Aceitar