Fórum Numeric out of range #460335
06/11/2013
0
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..
Curtir tópico
+ 0Posts
06/11/2013
Pjrm1470
Quanto mais detalhar a informação, melhor e mais rápido será a resposta.
Abraço,
PJRM1470.
Gostei + 0
06/11/2013
Fabio Ferreira..
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;
Gostei + 0
06/11/2013
Pjrm1470
Não da pra eu saber com essas informações, pois não sei o datatype de seus fields e suas propriedades.
Gostei + 0
06/11/2013
Fabio Ferreira..
>>>>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;
Gostei + 0
07/11/2013
Fabio Ferreira..
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.
Gostei + 0
07/11/2013
Deivison Melo
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!!
Gostei + 0
08/11/2013
Pjrm1470
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.
Gostei + 0
08/11/2013
Fabio Ferreira..
É 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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)