Campo numerico com problemas!

(Emerson Rodrigues) #1

Boa tarde pessoal…

Estou passando pelo seguinte problema após atualizar a versão do ScriptCase para 5.2.

Antigamente ao utilizar um campo númerico e clicar no botão de iserir registro, o a tabela do banco era alimentada com valor 0(zero), isso porque não havia preenchido informação alguma no formulário. Isso para nós era muito útil, porque em nossos formulário é necessário preencher todos os campos.

Agora na versão 5.2, percebi que os campos numéricos não fazem mais essa função,o que acaba sendo um problema gravíssimo, tendo em vista que já existem centenas de formulários que dependem dessa funcionalidade.

Ao perceber isso, tentei realizar o seguinte teste no Evento onValidate:

if ({camp040} == “”){
{camp040} = “0”;
}

Mesmo assim não houve inserção do valor 0 na tabela do banco.

Tentei com outros tipos de campos e percebi que com campo Tipo de Dado “Texto” do scriptcase, o registro é inserido no banco desde que eu utilize a validação acima.

O problema que é não é interessante utilizar campos textos para receber valores numéricos, pois os campos textos aceitam a inserção de qualquer caractere e a unica forma de negar é o alerta de validação informando que o campo possúi caractere inválido.

Alguém passou por isso ou poderia me ajudar?

A Netmake está sabendo desse problema?

Agradeço a atenção de todos.

Abraço… Emerson

(Cleyton Euler) #2

Tenta assim:

if ({camp040} == “”){
{camp040} = 0;
}

Sem aspas para campos númericos!!!

(Emerson Rodrigues) #3

Infelizmente não funcionou, apenas nos campos de texto.

:frowning:

(George Carvalho) #4

No evento onBeforeInsert

if ({camp040} < 1){
{camp040} = 0;
}

(Cleyton Euler) #5

É bom evitar comparação (… == “”) em campos numéricos.

(Emerson Rodrigues) #6

Grande George Carvalho e Cleyton Euler… Valewww

Utilizei o comando “if” sugerido pelo George e segui o seu conselho do Cleyton para evitar comparações quando for trabalhar com campos numéricos, porém percebi que utilizando o mesmo comando “if” (que eu já vinha utilizando) no evento onBeforeInsert também funcionou.

Caso essa mudança não tenha sido mencionada no changelog (digo isso pois não me lembro de ter lido algo a respeito no documento), fica ai a sugestão!

Um Abraço para todos!

Emerson

(Cleyton Euler) #7

É pq é meio relativo, as vezes o valor no campo é vázio ou nulo. E no PHP o que está entre aspas duplas é uma string. Mesmo um número entre aspas duplas.

No mySQL por exemplo, um campo que nunca recebeu um dado tem valor null, mas um campo que tenha seu conteúdo “apagado” é vázio.

Daí as vezes uma comparação … == “” pode falhar.

Acho que é isso. rsrsrs.

(Emerson Rodrigues) #8

Claro… entendo perfeitamente…

Mas gostaria de mencionar que foi desativado uma função do campo numérico que realmente me deu muito trabalho por aqui.

Como mencionei inicialmente, antes de atualizar a versão para a 5.2, o campo numérico fazia a validação automaticamente, ou seja, quando um formulário composto de campos numéricos não recebiam qualquer valor em seus campos, o formulário inseria o valor 0 no banco de dados (sem utilizar o qualquer evento do SC), o que para mim era muito útil.

Agora tenho uma bela manutenção para realizar nos vários formulários que já estavam em produção. rsrsrs (O.o)

Abraço…

Emerson

(Cleyton Euler) #9

Ai é complicado mesmo.

Por isso, habitue-se a fazer sempre validações na aplicação. Não deixe nada default. De tanto isso acontecer comigo, sempre faço as validações. Se preciso de zero na tabela, mesmo o SC fazendo isso automaticamente, eu forço o valor via código.

Isso garante menos dor de cabeça quando atualizamos o SC.