Fórum Problemas ao gravar usando IfThen #623801
08/08/2025
0
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
Curtir tópico
+ 0Post mais votado
11/08/2025
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.
Arthur Heinrich
Gostei + 2
Mais Posts
08/08/2025
Arthur Heinrich
Experimente mudar para:
qrAux.ParamByName(''NF'').AsInteger := StrToIntDef( edNF.Text = EmptyStr, 0 );
Gostei + 0
11/08/2025
Renan
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
11/08/2025
Renan
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
12/08/2025
Renan
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
Clique aqui para fazer login e interagir na Comunidade :)