Fórum Numeric out of range #460335

06/11/2013

0

Classe do erro: EADSDatabaseError
Base de Dados - Erro - Código: 5121
TBFATURPEM: Numeric out of range.
Nome do arquivo: Arquivo de Produtos/Serviços dos Pedidos de Vendas

Pessoal,
Alguém conhece alguma propriedade ou alguma forma de identificar qual o campo que esta estourando quando da atualização de um atributo no registro.

Grato,
Fabio Ferreira..

Fabio Ferreira..

Responder

Posts

06/11/2013

Pjrm1470

codigo + linha do provavel arquivo que está copiando?

Quanto mais detalhar a informação, melhor e mais rápido será a resposta.
Abraço,
PJRM1470.
Responder

Gostei + 0

06/11/2013

Fabio Ferreira..

Segue abaixo o trecho que atualiza essa tabela.
Justamente por conter muitos atributos é a dificuldade de se saber qual campo esta estourando.
Procurei na classe de erros mas não encontrei alguma propriedade que tivesse essa informação. Tem alguma ideia ?


odxARQ.LOCK_REG( DMFATURA.TBFATURpem );
DMFATURA.TBFATURpemCLASFISC.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CLASFISC;
DMFATURA.TBFATURpemCODTDEPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CODTDEPEM;
DMFATURA.TBFATURpemCODPREPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CODPREPEM;
DMFATURA.TBFATURpemCODFISPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CODFISPEM;
DMFATURA.TBFATURpemCODNCMPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CODNCMPEM;
DMFATURA.TBFATURpemCODUNI.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CODUNI;
DMFATURA.TBFATURpemCODBARPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CODBARPEM;
DMFATURA.TBFATURpemUNIVALPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_UNIVALPEM;

DMFATURA.TBFATURpemITEMPCOPEM.ASINTEGER:= KTBPEMSERePRO[KINDPEM].PEM_ITEMPCOPEM;
DMFATURA.TBFATURpemNUMPCOPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_NUMPCOPEM;

DMFATURA.TBFATURpemCUSTOMAT.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_CUSTOMAT;
DMFATURA.TBFATURpemCUSTODIG.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_CUSTODIG;
DMFATURA.TBFATURpemDIASCON.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_DIASCON;
DMFATURA.TBFATURpemHORASCON.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_HORASCON;
DMFATURA.TBFATURpemQTDITEMAT.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_QTDITEMAT;
DMFATURA.TBFATURpemVALITEPED.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALITEPED;

DMFATURA.TBFATURpemPESOBRUPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_PESOBRUPEM;
DMFATURA.TBFATURpemPESOLIQPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_PESOLIQPEM;
{
***** DADOS DO SIMPLES NACIONAL
}
DMFATURA.TBFATURpemCSOSNPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CSOSNPEM;
DMFATURA.TBFATURpemVALCREICMM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALCREICMM;
{
***** DADOS DO ICMS
}
DMFATURA.TBFATURpemALIQICM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_ALIQICM;
DMFATURA.TBFATURpemCSTICMPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CSTICMPEM;
DMFATURA.TBFATURpemINCICMPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_INCICMPEM;
DMFATURA.TBFATURpemISEICMPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_ISEICMPEM;
DMFATURA.TBFATURpemOUTICMPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_OUTICMPEM;
DMFATURA.TBFATURpemPERREDICM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_PERREDICM;
DMFATURA.TBFATURpemVALORICM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALORICM;
DMFATURA.TBFATURpemVALZICMPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALZICMPEM;
{
***** DADOS DA ST
}
DMFATURA.TBFATURpemINCIDESTR.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_INCIDESTR;
DMFATURA.TBFATURpemSTRPERPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_STRPERPEM;
DMFATURA.TBFATURpemTIPSTRCPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_TIPSTRCPEM;
DMFATURA.TBFATURpemVALORSTR.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALORSTR;
{
***** DADOS DO PIS DA OPERACAO
}
DMFATURA.TBFATURpemALIPISCPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_ALIPISCPEM;
DMFATURA.TBFATURpemCSTPISPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CSTPISPEM;
DMFATURA.TBFATURpemINCPISCPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_INCPISCPEM;
DMFATURA.TBFATURpemTIPPISCPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_TIPPISCPEM;
DMFATURA.TBFATURpemVALPISCPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALPISCPEM;
{
***** DADOS DO COFINS DA OPERACAO
}
DMFATURA.TBFATURpemALIFINCPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_ALIFINCPEM;
DMFATURA.TBFATURpemCSTFINPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CSTFINPEM;
DMFATURA.TBFATURpemINCFINCPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_INCFINCPEM;
DMFATURA.TBFATURpemTIPFINCPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_TIPFINCPEM;
DMFATURA.TBFATURpemVALFINCPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALFINCPEM;
{
***** DADOS DO IPI
}
DMFATURA.TBFATURpemALIQIPI.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_ALIQIPI;
DMFATURA.TBFATURpemCSTIPIPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_CSTIPIPEM;
DMFATURA.TBFATURpemINCIPIPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_INCIPIPEM;
DMFATURA.TBFATURpemISEIPIPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_ISEIPIPEM;
DMFATURA.TBFATURpemOUTIPIPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_OUTIPIPEM;
DMFATURA.TBFATURpemPERREDIPI.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_PERREDIPI;
DMFATURA.TBFATURpemVALORIPI.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALORIPI;
DMFATURA.TBFATURpemVALZIPIPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALZIPIPEM;
{
***** OUTROS VALORES DO PRODUTO
}
DMFATURA.TBFATURpemVALCONTPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALCONTPEM;
DMFATURA.TBFATURpemVALDCOMPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALDCOMPEM;
DMFATURA.TBFATURpemVALDESCPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALDESCPEM;

DMFATURA.TBFATURpemVALFRETPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALFRETPEM;
DMFATURA.TBFATURpemVALOUTRPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALOUTRPEM;
DMFATURA.TBFATURpemVALSEGUPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALSEGUPEM;
{
***** DADOS DA CARGA TRIBUTARIA
}
DMFATURA.TBFATURpemALIQTOTPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_ALIQTOTPEM;
DMFATURA.TBFATURpemTRIBTOTPEM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_TRIBTOTPEM;
{
***** DADOS DO EXTERIOR
}
DMFATURA.TBFATURpemVALBASIMPM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALBASIMPM;
DMFATURA.TBFATURpemVALIMPIMPM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALIMPIMPM;
DMFATURA.TBFATURpemVALIOFIMPM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALIOFIMPM;
DMFATURA.TBFATURpemVALSISCOMM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALSISCOMM;

DMFATURA.TBFATURpemNUMADICPEM.ASINTEGER:= KTBPEMSERePRO[KINDPEM].PEM_NUMADICPEM;
DMFATURA.TBFATURpemSEQADICPEM.ASINTEGER:= KTBPEMSERePRO[KINDPEM].PEM_SEQADICPEM;

DMFATURA.TBFATURpemNUMFCIPEM.ASSTRING:= KTBPEMSERePRO[KINDPEM].PEM_NUMFCIPEM;

DMFATURA.TBFATURpem.POST;
Responder

Gostei + 0

06/11/2013

Pjrm1470

ja debugou? Ao debugar ele deve cair no except na linha em que se estoura.
Não da pra eu saber com essas informações, pois não sei o datatype de seus fields e suas propriedades.
Responder

Gostei + 0

06/11/2013

Fabio Ferreira..

Não tem como debugar pois esse erro esta dando em produção, no cliente em alguma condição que não temos como levantar. Se o erro estivesse ocorrendo aqui no escritório não teríamos essa dificuldade.

>>>>Não da pra eu saber com essas informações, pois não sei o datatype de seus fields e suas propriedades.

Quanto ao datatype veja no nome do atributo (VALSISCOMM) que esta a sua definição (float, integer, string, etc...).

DMFATURA ==> Data modulo com as tabelas;
TBFATURpem ==> Nome da tabela
VALSISCOMM ==> atributo da tabela
.ASxxxx ==> datatype


DMFATURA.TBFATURpemVALSISCOMM.ASFLOAT:= KTBPEMSERePRO[KINDPEM].PEM_VALSISCOMM;
Responder

Gostei + 0

07/11/2013

Fabio Ferreira..

Pelo jeito não existe essa possibilidade de se identificar o atributo.
Esse tipo de comportamento da linguagem é que complica o desenvolvimento profissional. É muito difícil ocorrer um erro no cliente, como esse ou um access violation, etc e não termos como identificar o que gerou o problema. Tudo bem que tem bibliotecas que podem ser utilizada para isso mas ai estamos trocando um problema por outro.
É uma pena.
Responder

Gostei + 0

07/11/2013

Deivison Melo

Utilize o Remote Debugger para Depurar sua aplicação remotamente.

Seguem abaixo alguns exemplos:


[b]Artigo[/b]
[url]http://www.planetadelphi.com.br/artigo/109/remote-debbuger-server[/url]


[b]Artigo Marco Cantu[/b]
[url]http://www.marcocantu.com/delphipowerbook/DebuggingDelphiPrograms.pdf[/url]


[b]Video Aula[/b]
[url]http://www.youtube.com/watch?v=k_8To6PgEHM[/url]

Esse são alguns dos poucos exemplos que existem sobre isso!


Abração e bons códigos!!

Responder

Gostei + 0

08/11/2013

Pjrm1470

Tinha esquecido de mencionar:
Sempre que eu desenvolvo um aplicativo, eu tento contornar todas as possibilidades de erro. Algo bem simples que pode estar acontecendo, é que por exemplo:
Se seu campo for um tipo NUMERIC(10,2), limite o TDBEdit (ou TEdit) para que não ultrapasse a quantidade que o campo suporta.

Se está estourando, é porque está deixando inserir valor superior à capacidade do seu campo.
Se não há tratamento disso nos controles visuais, faça uma verificação no código antes de atribuir o valor ao campo. (Ps. Acho mais facil limitar o input do usuário)

Espero que ajude.
Abraço.
Responder

Gostei + 0

08/11/2013

Fabio Ferreira..

Ola PJRM1470,

É claro que também fazemos tudo isso que você falou. Isso realmente é bem básico e definitivamente não é esse tipo de resposta que estamos buscando.
Tudo isso posto, a questão é que o erro ocorreu e estamos somente querendo saber se tem alguma forma da linguagem nos dar essa informação, considerando que todos os cuidados foram tomados, os edits estão corretos, visualmente foi conferido, etc...
Só para se ter uma ideia nosso sistema tem 215 tabelas com 6.312 atributos. Em alguma situação, não prevista ou gerada por algum usuário muito criativo, o campo fica negativo e ai já estoura o tamanho previsto.

De qualquer maneira grato pela resposta,

Um abraco,

Fabio

Se alguém souber a resposta, agradecemos.
Responder

Gostei + 0

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

Aceitar