Problemas ao gravar usando IfThen
Pessoal, tenho um TEdit chamado NF (para aramazenar a nota fiscal)
Ocorre que em alguns casos não tem nota, então esse campo fica vazio.
Para gravar eu uso um insert, então fiz meu parametro assim:
Pela lógica, se o ednota estiver vazio, deveria gravar o valor ZERO, mas se estiver preenchido, deve gravar o valor que está no campo.
Porém ao gravar me deparo com o erro
Ocorre que em alguns casos não tem nota, então esse campo fica vazio.
Para gravar eu uso um insert, então fiz meu parametro assim:
qrAux.ParamByName(''NF'').AsInteger := IfThen(edNF.Text = EmptyStr, 0, StrToInt(edNF.Text));Pela lógica, se o ednota estiver vazio, deveria gravar o valor ZERO, mas se estiver preenchido, deve gravar o valor que está no campo.
Porém ao gravar me deparo com o erro
'''' não é um valor inteiro válido
Renan
Curtidas 0
Melhor post
Arthur Heinrich
11/08/2025
Desculpe. O Copy/Past torna a gente preguiçoso e acabei escrevendo errado:
A função StrToIntDef faz exatamente a mesma coisa que o StrToInt. Caso o texto passado no primeiro parâmetro não seja a representação de um número inteiro, ela retorna o segundo parâmetro, sem gerar exceções.
qrAux.ParamByName(''NF'').AsInteger := StrToIntDef( edNF.Text , 0 );
A função StrToIntDef faz exatamente a mesma coisa que o StrToInt. Caso o texto passado no primeiro parâmetro não seja a representação de um número inteiro, ela retorna o segundo parâmetro, sem gerar exceções.
GOSTEI 2
Mais Respostas
Arthur Heinrich
08/08/2025
O campo pode ser diferente de uma string vazia, mas não necessariamente representar um número. Por exemplo, pode conter um espaço.
Experimente mudar para:
Experimente mudar para:
qrAux.ParamByName(''NF'').AsInteger := StrToIntDef( edNF.Text = EmptyStr, 0 );
GOSTEI 0
Renan
08/08/2025
Olá, Arthur
Não entendi como utilizar a sua sugestão, pois ao que entendi, ela define o valor zero caso esteja vazio, porém não consegui aplicar caso o edit realmente receba o numero da nota fiscal
Usei ainda esse codigo pra verificar se o edit possui texto e me indica que ele está de fato vazio, o que está me intrigando
Não entendi como utilizar a sua sugestão, pois ao que entendi, ela define o valor zero caso esteja vazio, porém não consegui aplicar caso o edit realmente receba o numero da nota fiscal
Usei ainda esse codigo pra verificar se o edit possui texto e me indica que ele está de fato vazio, o que está me intrigando
if Trim(Edit1.Text) = '' then // O Edit está vazio ou contém apenas espaços em branco else // O Edit contém texto
GOSTEI 0
Renan
08/08/2025
Certo, mas ainda não entendi como usar essa opção dentro do iFThen.
Notei uma coisa estranha também. No evento de keypress eu permito que o edit receba apenas numeros de 0..9, a tecla BACKSPACE e tecla ENTER.
Se eu remover essa programação, não recebo o erro, porém acabo permitindo que o usuário digite letras.
No final, acho que eu vou testar se o campo é vazio e preencher ele com ZERO no evento de exit.
Notei uma coisa estranha também. No evento de keypress eu permito que o edit receba apenas numeros de 0..9, a tecla BACKSPACE e tecla ENTER.
Se eu remover essa programação, não recebo o erro, porém acabo permitindo que o usuário digite letras.
No final, acho que eu vou testar se o campo é vazio e preencher ele com ZERO no evento de exit.
GOSTEI 0
Renan
08/08/2025
Perdão, Arthur.
Não havia entendido a lógica.
Se nada for informado, grava ZERO, do contrario grava o numero da nota.
Obrigado pela ajuda.
Não havia entendido a lógica.
Se nada for informado, grava ZERO, do contrario grava o numero da nota.
Obrigado pela ajuda.
GOSTEI 0