Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Adicionar Valor Num Dbedit?


Guest Walter Gazzarrini Neto

Pergunta

Guest Walter Gazzarrini Neto

Olá eu fiz esse código simples que eu digito um valor no edit1 e ele vai adicionando no dbedi2 que joga pra tabela!!!

var
qtdc,qtda,qtdt:integer;
begin
qtdt:=0;
qtdc:=strtoint(dbedit2.Text);
qtda:=strtoint(edit1.Text);
qtdt:=qtda + qtdc;
dbedit2.Text:=inttostr(qtdt);

E ele dá erro de ''is not a valid intger value" , já verifiquei na tabela e o campo é do tipo inteiro não consigo compreender o erro,alguém pode me ajudar???

obrigado...

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

var
qtdc,qtda,qtdt:integer;
begin
qtdt:=0;
qtdc:=strtoint(dbedit2.Text);
qtda:=strtoint(edit1.Text);
qtdt:=qtda + qtdc;
dbedit2.Text:=inttostr(qtdt);
vamos observar seu código.... quando você faz
qtdc:=strtoint(dbedit2.Text);

ele n consegue pegar o valor nulo... nesse caso ele n está está em branco né?

acho que o problema é esse... (se n existir nada escrito no dbedit2)

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Walter Gazzarrini Neto

O problema é esse mesmo !!!!!!!!!!!!!!

Como eu faço para resolve-lo?,pois quando mando inseri ele fica nulo mesmo ,ai num adianta manda nada fica escrito nele!!!!

Link para o comentário
Compartilhar em outros sites

  • 0
Como eu faço para resolve-lo?,pois quando mando inseri ele fica nulo mesmo ,ai num adianta manda nada fica escrito nele!!!!
Sabe o dataset (table ou query) que você ligou ao seu DBEdit, via propriedade DataSource? Então, você deve encontrar nele um evento chamado OnNewRecord e escreve neste evento o código para inicializar o tal campo com o valor zero (por exemplo).

Mas, fora questão levantada pelo colega Mayron Cachina, duas considerações:

1) sobre este tipo de atribuição: qtda:=strtoint(edit1.Text);

- havendo a possibilidade de a propriedade Text de seu edit conter um valor nulo (ou mesmo inválido - texto), o ideal é que você faça algum tratamento deste conteúdo antes de utilizá-lo em qualquer operação. Assim, você emite uma mensagem apropriada ao usuário e evita as "exceptions";

Pode também fazer uso da função StrToIntDef(num_texto, valor_default).

2) sobre este tipo de atribuição: qtdc:=strtoint(dbedit2.Text);

- uma vez que seu DBEdit está vinculado a um campo (field) de um dataset (table ou query), seria mais apropriado e vantajoso acessar este campo e não a propriedade Text.

Vamos supor que o nome do dataset em questão seja TabItens e que o nome do campo seja QTD.

Se você adicionou os campos ao seu dataset em design-time, então você terá como acessar o campo diretamente através do componente TFieldInteger adicionado ao seu form e, neste caso, ele se chamaria TabItensQTD. Então, nenhuma conversão seria necessária, ou seja, sua linha de código:

qtdc := strtoint(dbedit2.Text);

passaria a ser escrita apenas assim:

qtdc := TabItensQTD.Value

Mas, se você não adicionou o campo em design-time, poderia ainda utilizar o método FieldByName para retornar um TField em run-time, referente ao seu campo no dataset. Neste caso, a linha de código ficaria:

qtdc := TabItens.FieldByName('QTD').AsInteger

Obs: utilizando o AsInteger, você está forçando a conversão do conteúdo do campo para um INTEGER, e caso o campo esteja NULO, ainda assim, seria retornado um ZERO. Já se utilizasse Value, estaria sujeito a exceptions já que neste caso, Value seria do tipo Variant

Observe ainda, que utilizando o field, não haveria sequer a necessidade da declaração de variável auxiliar, já que você poderia utilizá-lo diretamente nas operações.

Esta abordagem, ainda pode evitar algumas "dores de cabeça" com conversões como a comentada neste post.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Walter Gazzarrini Neto

Eu tive que resolver pondo outro edit e mandando adicionar o valor no outro e no criar do form deixar o edit =0 assim ele num puxa nenhum valor nulo!!!!!!!

Obrigado a todos.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...