USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  erro em calculo...
Jose Daverson
PACAJÁ
PA - BRASIL
ENUNCIADA !
Postada em 10/12/2005 10:10 hs            
alguem pode dar uma olhada nessa rotina em anexo e me ajudar a corrigir o erro...

em minha tela de vendas... quando insiro um valor,fracionado ele entra normalmente... se eu for fechar a venda ta tudo certo, mas se eu colocar outro item na lista de compra o primeiro valor, passa pra inteiro, e acontece tb depois do segunto... e ai vai ou seja a cada item que adiciono ele arredonda o anterior...
trecho do calculo
Private Sub btnCompute_Click()
             a = Val(txtAmount.Text) * Val(txtDiscount.Text)
             b = CCur(txtAmount.Text) - a
             txtAmount.Text = b
       
            If IsNumeric(txtAmount.Text) = False Then txtAmount.Text = "0,00"
            If IsNumeric(txtDiscount.Text) = False Then txtDiscount.Text = "0,00"
            If IsNumeric(txtPayments.Text) = False Then txtPayments.Text = "0,00"
            a = CCur(txtAmount.Text) * CCur(txtDiscount.Text)
            b = CCur(txtAmount.Text) - a
            txtAmount.Text = b
       
        If CCur(txtPayments.Text) < CCur(txtAmount.Text) Then
           MsgBox "Dinheiro Insuficiente " & Chr(10) & "Por favor altere o valor " & Chr(10) & "that is greater than or equal " & StrConv(txtAmount, vbUpperCase), vbOKOnly + vbInformation, "Insuficiente"
                txtAmount.Text = CStr(Format(ComputeAmount, "########0.00"))
        Else
           
          If CCur(txtDiscount.Text) < CCur(txtAmount.Text) Then
           
                bayad = CCur(txtPayments.Text)
                    sukli = bayad - CCur(txtAmount.Text)
                        txtChange.Text = CStr(Format(sukli, "##,####0.00"))
                            txtAmount.Text = CStr(Format(txtAmount.Text, "##,####0.00"))
                                 txtPayments.Text = CStr(Format(txtPayments.Text, "##,####0.00"))
                            btnSave.Enabled = True
                        txtPayments.locked = True
                        btnCompute.Enabled = False
                    btnSave.SetFocus
                txtDiscount.locked = True
          Else
            MsgBox "O desconto deverá ser menor que " & vbCrLf & " o total ", vbExclamation, "Desconto"
          End If
        End If
       
     txtPayments.SetFocus
End Sub
   
LUÍS OLIVEIRA
SANTOS
SP - BRASIL
ENUNCIADA !
Postada em 10/12/2005 14:59 hs         
Exponha o código onde você dimensiona as variáveis A e B de seu código. Se elas são dimensionadas de forma implícita (sem o Dim variável as Tipo), elas estão sendo criadas como Variant e, nesse caso, passar á ser do tipo assumido pelo resultado da primeira operação (A é um Integer e B um Double para Currency). Decorrente disso, quaisquer cálculos envolvendo os dois tipos, que são diferentes, resultará em um inteiro.
No início da rotina, faça:
 
Dim A as Double
Dim B as Double
 
Em seguida substitua a instrução:
 
a = Val(txtAmount.Text) * Val(txtDiscount.Text)
 
Por:
 
a = NVL(txtAmount.Text,0) * NVL(txtDiscount.Text,0)
 
E para finalizar, crie a função NVL, mais ou menos parecida com:
 
Public Function NVL(ByVal Valor as Variant, Optional ByVal Padrão as Variant = "") as Variant
Dim vRet as Variant
vRet = Valor
If IsNull(Valor) = True Then
    vRet = Padrão
Else
    If Valor = Empty Then vRet = Padrão
End If
NVL = vRet
vRet = Empty
End Function
 
A função NVL tem por finalidade trazer algum dado válido para campos nulos e/ou controles que possam nem sempre os conter. Assim, para trazer sempre o valor "0" desde um TextBox, mesmo que este não tenha sido preenchido, basta usá-la.
 
   
Jose Daverson
PACAJÁ
PA - BRASIL
ENUNCIADA !
Postada em 12/12/2005 12:27 hs            
OBRIGADO... PELA AJUDA...
 
AGORA SE POSSIVEL GOSTARIA DE QUE ME AJUDASSE A CRIAR UMA IMPRESSÃO DA VENDA... USANDO O PRINTER...
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página