como evitar estouro na gravação de um campo
Moderador: Moderadores
- Nascimento
- Usuário Nível 4

- Mensagens: 763
- Registrado em: 19 Jul 2008 12:11
- Localização: OLINDA-PE
como evitar estouro na gravação de um campo
Amigos estou com um problema em um banco no estoque, por falta de alguns clientes nao alimentarem o estoque o valor fica negativo
as vezes acontecendo de dar erro na hora do replace
como eu faço pra evitar isso o tipo do campo é Numerico 9 decimal 3
como eu faria pra evitar gravar quando chegar ao limite negativo maximo?
sem precisar alterar a estrutura do banco ....
as vezes acontecendo de dar erro na hora do replace
como eu faço pra evitar isso o tipo do campo é Numerico 9 decimal 3
como eu faria pra evitar gravar quando chegar ao limite negativo maximo?
sem precisar alterar a estrutura do banco ....
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina
clipper 5.3 /harbour/minigui
como evitar estouro na gravação de um campo
Coloca na interceptação do errorsys se o erro for relativo a estouro do campo pra avaliar se se refere ao campo em questão da tabela em questão e ai trata isso e retorna TRUE, caso esse tipo de erro puder retornar (não lembro de cabeça) tem uns tipos de erros q permitem outros não.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
- Nascimento
- Usuário Nível 4

- Mensagens: 763
- Registrado em: 19 Jul 2008 12:11
- Localização: OLINDA-PE
como evitar estouro na gravação de um campo
não teria nobre como ser na propria função...
tipo se fosse estourar o campo nao gravasse?
tipo se fosse estourar o campo nao gravasse?
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina
clipper 5.3 /harbour/minigui
como evitar estouro na gravação de um campo
Tem uma função do harbour chamada LenNum
Você pode usar para testar o tamanho, exemplos:
Você pode usar para testar o tamanho, exemplos:
Código: Selecionar todos
PROCEDURE Main
? LenNum( 1 ) // result: 1
? LenNum( 10 ) // result: 2
? LenNum( 100 ) // result: 3
? LenNum( 1000 ) // result: 4
? LenNum( 10.1 ) // result: 4
? LenNum( 100.12 ) // result: 6
? LenNum( 1000.123 ) // result: 8
? LenNum( 0.1 ) // result: 3
? LenNum( 0.01 ) // result: 4
? LenNum( 0.001 ) // result: 5
? LenNum( 0.0001 ) // result: 6
RETURN
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
como evitar estouro na gravação de um campo
Sim com certeza, se vc centraliza a gravação pode usar a ideia do Alexandre antes de gravar, a forma q passei seria se não quisesse ir alterando em vários possíveis locais q fazem a gravação.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
como evitar estouro na gravação de um campo
Não sei se é isto, enfim tem que testar:
nVal := -999999999.999
nLen := LenNum( nVal ) // VAI RETORNAR 14
nVal := -9999999999.999
nLen := LenNum( nVal ) // VAI RETORNAR 15, AQUI VAI ESTOURAR NO SEU CASO
nVal := -999999999.999
nLen := LenNum( nVal ) // VAI RETORNAR 14
nVal := -9999999999.999
nLen := LenNum( nVal ) // VAI RETORNAR 15, AQUI VAI ESTOURAR NO SEU CASO
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
como evitar estouro na gravação de um campo
Talvez fosse péssimo, nunca iria saber que tentou gravar algo que não cabe.não teria nobre como ser na propria função...
tipo se fosse estourar o campo nao gravasse?
A questão é: porque está tentando gravar um número que não cabe?
Se o aplicativo fizer checagem, resolvido.
Ou... se mesmo assim quiser deixar automático.... só alterar na errorsys pra quando for esse tipo de erro seguir em frente.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
como evitar estouro na gravação de um campo
Olá pessoal,
Uma outra opção:
999999999.999 (se positivo, então 9 inteiros e 3 decimais)
-99999999.999 (se negativo, então 8 inteiros e 3 decimais, pois o sinal (-) ocupa uma casa)
E se fizer então:
Uma outra opção:
999999999.999 (se positivo, então 9 inteiros e 3 decimais)
-99999999.999 (se negativo, então 8 inteiros e 3 decimais, pois o sinal (-) ocupa uma casa)
E se fizer então:
Código: Selecionar todos
If ( M->nValorSalvar >= -99999999.999 .And. M->nValorSalvar <= 999999999.999 )
Replace nCampo With M->nValorSalvar
Else
Hb_Alert( "Valor do campo cNomeCampo excede o limite permitido" )
EndIfAbraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
