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

Problema Estranho Com Casas Decimais


sweet-tooth

Pergunta

Olhem só,eu consegui concluir quase 100% a tela de vendas aqui usando Flexgrid.

Estaria tudo perfeito se não fosse um problema que acabei de encontrar.Tenho duas tabelas e os dados devem sair da primeira para a segunda tabela,na tabela1 coluna 3 é retornado a quantidade do produto em estoque,ao dar 2 cliques na primeira tabela é aberto um inputbox onde é digitado a quantidade do produto que deverá ser adicionado na segunda tabela,eu queria fazer algo que se o valor digitado na inputbox for maior que o valor trazido para a coluna3 (que é a quantidade em estoque) desse uma mensagem de erro e exit sub,então fiz isso:

quant = InputBox("Digite a quantidade", "Quantidade")

qtdestoque = flex.TextMatrix(flex.Row, 3)

If quant > qtdestoque Then

MsgBox "Quantidade maior que a disponível!", vbCritical, "Erro"

Exit Sub

Else

flex2.AddItem .......

sendo quant a variável quant é o valor da inputbox,e qtdestoque o valor da coluna3 referente a linha que será adicionada.

Mas vejam o que acontece,se no estoque tiver 40 do produto x,retornará 40 na flex coluna 3,e aí acontece algo curioso,se eu digitar na inputbox qualquer numero acima de 4(com apenas uma casa decimal)eu entro na primeira condição do if e da erro.Se eu quiser adicionar 1,2,3 ou 4 na flex2,digito dessa forma no inputbox e vai sem problema,mas agora se for digitar 5,6,7,8 ou 9 tenho que digitar 05,06,07,08 e 09...

Se tiver na coluna3/estoque tiver 15 e eu quiser adicionar de 2 desse produto até 9 na lista,tenho que usar o 0 na frente também.

Então fica nisso,se tiver 30 produtos,se eu for ter que colocar 4 tem que usar 04,se tiver 60 produtos e eu quiser de 7 pra cima tenho que colocar 0 na frente de qualquer digito.Eu a principio pensei que éra problema com casas decimais,porque se tem 30 e eu digito 4 e ele diz que não tem tudo isso no estoque ele podia estar entendendo que 4 éra 40,mas se eu digitar 20 ele entenderia como 200,e não acontece isso.

O que pode ser isso?

O problema de digitar o 0 na frente,é que mais pra frente preciso realizar operações envolvendo a variável quant,e toda vez que digito o 0 na frente de algum numero na inputbox da sempre type mismatch.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

O problema é que tanto o valor oriundo da FlexGrid quanto o que você está recebendo pela InputBox são strings. Na comparação de strings, vale a ordem alfabética. Veja o teste na janela Immediate do VB:

? "5">"40"
True
? 5>40
False

Ao fazer "5">"40" é como se você fizesse "c">"ab", por exemplo.

A solução para o seu caso é converter o valor digitado para um valor numérico, o que pode ser feito através da função Int() ou Val().

Abraços,

Graymalkin

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...