MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Resultado de calculadora

    Compartilhe

    hapintopereira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7
    Registrado : 08/01/2016

    Resultado de calculadora

    Mensagem  hapintopereira em Sex 08 Jan 2016, 18:51

    boa tarde
    estou com um problema numa calculadora em vba access que tirei da internet, se alguem me puder ajudar agradeço.
    esta calculadora funciona muito bem, até ao ponto de somar, subtrair, dividir ou multiplicar qualquer valor decimal, por exemplo: quando somo 2.2 + 2.2 o resultado seria 4.4, mas não, o que aparece é 44, sem ponto.
    as variáveis estão definidas como double, não consigo achar solução na internet, daí me ter registado neste forum, para que alguem me possa ajudar.
    desde já agradeço
    obrigado

    FabioPaes
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2328
    Registrado : 14/08/2013

    Re: Resultado de calculadora

    Mensagem  FabioPaes em Sex 08 Jan 2016, 19:09

    Posta o codigo ou bs com essa calculadora, se nao fica complicado achar o erro.

    hapintopereira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7
    Registrado : 08/01/2016

    Re: Resultado de calculadora

    Mensagem  hapintopereira em Sex 08 Jan 2016, 19:22

    visto que não consigo enviar access completo, segue o código

    Option Compare Database
    Option Explicit
    Public strOpr As String 'Hold + - / * Signs
    Public dblVal1 As Double 'Hold First Entered Value
    Public dblVal2 As Double 'Hold Second value after opretor singn hit
    Public dblResult As Double 'Show result
    Public IntTemp As Double 'Hold Key State
    Const GetTemp = 1
    Const RelTemp = 0

    Private Sub cmd0_Click()
    On Error Resume Next

    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0"
    ElseIf Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmd0.Caption & "."
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd0.Caption
    'IntTemp = RelTemp
    End If

    ' If Me.lblDisplay.Caption = "0." And IntTemp = GetTemp Then
    ' Me.lblDisplay.Caption = Me.cmd0.Caption
    ' Else
    ' Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd0.Caption
    ' End If

    End Sub

    Private Sub cmd1_Click()
    On Error Resume Next

    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0."
    IntTemp = RelTemp
    End If

    If Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmd1.Caption
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd1.Caption
    End If

    End Sub


    Private Sub cmd2_Click()
    On Error Resume Next

    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0."
    IntTemp = RelTemp
    End If

    If Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmd2.Caption
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd2.Caption
    End If

    End Sub

    Private Sub cmd3_Click()
    On Error Resume Next

    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0."
    IntTemp = RelTemp
    End If

    If Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmd3.Caption
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd3.Caption
    End If

    End Sub

    Private Sub cmd4_Click()
    On Error Resume Next

    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0."
    IntTemp = RelTemp
    End If

    If Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmd4.Caption
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd4.Caption
    End If

    End Sub

    Private Sub cmd5_Click()
    On Error Resume Next

    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0."
    IntTemp = RelTemp
    End If

    If Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmd5.Caption
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd5.Caption
    End If

    End Sub

    Private Sub cmd6_Click()
    On Error Resume Next

    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0."
    IntTemp = RelTemp
    End If

    If Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmd6.Caption
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd6.Caption
    End If

    End Sub

    Private Sub cmd7_Click()
    On Error Resume Next

    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0."
    IntTemp = RelTemp
    End If

    If Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmd7.Caption
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd7.Caption
    End If

    End Sub

    Private Sub cmd8_Click()
    On Error Resume Next

    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0."
    IntTemp = RelTemp
    End If

    If Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmd8.Caption
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd8.Caption
    End If

    End Sub

    Private Sub cmd9_Click()
    On Error Resume Next

    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0."
    IntTemp = RelTemp
    End If

    If Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmd9.Caption
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmd9.Caption
    End If

    End Sub

    Private Sub cmdAdd_Click()
    On Error GoTo err_handler

    dblVal1 = Me.lblDisplay.Caption
    strOpr = Me.cmdAdd.Caption
    Me.txtOpHolder.Value = "+"
    IntTemp = GetTemp

    Exit_Procedure:
    On Error Resume Next
    Exit Sub

    err_handler:
    Select Case Err.Number
    Case 13
    Resume Next
    Case Else
    MsgBox "Error No.: " & Err.Number & " " & "Error Description: " & Err.Description
    End Select

    End Sub

    Private Sub cmdBackSpace_Click()
    On Error Resume Next

    If Me.lblDisplay.Caption = "0." Then
    Exit Sub
    ElseIf Len(Me.lblDisplay.Caption) > 1 Then
    Me.lblDisplay.Caption = Left(Me.lblDisplay.Caption, Len(Me.lblDisplay.Caption) - 1)
    Else
    Me.lblDisplay.Caption = "0."
    End If

    End Sub

    Private Sub cmdCe_Click()
    Me.lblDisplay.Caption = "0."
    End Sub

    Private Sub cmdClear_Click()
    On Error Resume Next

    Me.lblDisplay.Caption = "0."
    Me.txtOpHolder.Value = ""
    dblVal1 = RelTemp
    dblVal2 = RelTemp
    dblResult = RelTemp
    strOpr = ""
    Me.txtPlusMinus.Value = ""

    End Sub

    Private Sub cmdDivide_Click()
    On Error GoTo err_handler

    dblVal1 = Me.lblDisplay.Caption
    strOpr = Me.cmdDivide.Caption
    Me.txtOpHolder.Value = "/"
    IntTemp = GetTemp

    Exit_Procedure:
    On Error Resume Next
    Exit Sub

    err_handler:
    Select Case Err.Number
    Case 13
    Resume Next
    Case Else
    MsgBox "Error No.: " & Err.Number & " " & "Error Description: " & Err.Description
    End Select
    End Sub

    Private Sub cmdDot_Click()
    On Error Resume Next
    If IntTemp = GetTemp Then
    Me.lblDisplay.Caption = "0."
    IntTemp = RelTemp
    End If

    If Me.lblDisplay.Caption = "0." Then
    Me.lblDisplay.Caption = Me.cmdDot.Caption
    End If
    If InStr(Me.lblDisplay.Caption, ".") >= 1 Then
    Exit Sub
    Else
    Me.lblDisplay.Caption = Me.lblDisplay.Caption + Me.cmdDot.Caption
    End If

    End Sub

    Private Sub cmdEquals_Click()
    On Error GoTo err_handler

    dblVal2 = Me.lblDisplay.Caption

    If Me.lblDisplay.Caption = "0." Then
    Exit Sub
    End If

    Select Case strOpr
    Case "+"
    dblResult = dblVal1 + dblVal2
    Me.lblDisplay.Caption = dblResult
    dblVal2 = dblResult

    Case "-"
    dblResult = dblVal1 - dblVal2
    Me.lblDisplay.Caption = dblResult
    dblVal2 = dblResult

    Case "*"
    dblResult = dblVal1 * dblVal2
    Me.lblDisplay.Caption = dblResult
    dblVal2 = dblResult

    Case "/"
    If dblVal2 = 0 Then
    Me.lblDisplay.Caption = "Cannot divided by zero."
    Exit Sub
    Else

    dblResult = dblVal1 / dblVal2
    Me.lblDisplay.Caption = dblResult
    dblVal2 = dblResult
    End If

    End Select

    IntTemp = GetTemp

    Exit_Procedure:
    On Error Resume Next
    Exit Sub

    err_handler:
    Select Case Err.Number
    Case 13
    Resume Next
    Case Else
    MsgBox "Error No.: " & Err.Number & " " & "Error Description: " & Err.Description
    End Select

    End Sub

    Private Sub cmdMultiply_Click()
    On Error GoTo err_handler

    dblVal1 = Me.lblDisplay.Caption
    strOpr = Me.cmdMultiply.Caption
    Me.txtOpHolder.Value = "*"
    IntTemp = GetTemp

    Exit_Procedure:
    On Error Resume Next
    Exit Sub

    err_handler:
    Select Case Err.Number
    Case 13
    Resume Next
    Case Else
    MsgBox "Error No.: " & Err.Number & " " & "Error Description: " & Err.Description
    End Select
    End Sub

    Private Sub cmdPercent_Click()
    On Error GoTo err_handler

    dblVal2 = Me.lblDisplay.Caption
    Dim dblForPercent As Double

    Me.txtPercent.Value = dblVal2

    If Me.lblDisplay.Caption = "0." Then
    Exit Sub
    End If

    Select Case strOpr
    Case "+"
    dblResult = dblVal1 * dblVal2 / 100
    Me.lblDisplay.Caption = dblResult
    dblVal2 = dblResult

    Case "-"
    dblResult = dblVal1 * dblVal2 / 100
    Me.lblDisplay.Caption = dblResult
    dblVal2 = dblResult

    Case "*"
    dblResult = dblVal1 * dblVal2 / 100
    Me.lblDisplay.Caption = dblResult
    dblVal2 = dblResult

    Case "/"

    dblResult = dblVal1 * dblVal2 / 100
    Me.lblDisplay.Caption = dblResult
    dblVal2 = dblResult

    End Select
    IntTemp = GetTemp

    Exit_Procedure:
    On Error Resume Next
    Exit Sub

    err_handler:
    Select Case Err.Number
    Case 13
    Resume Next
    Case Else
    MsgBox "Error No.: " & Err.Number & " " & "Error Description: " & Err.Description
    End Select
    End Sub

    Private Sub cmdPlusMinus_Click()
    On Error GoTo err_handler

    If Me.lblDisplay.Caption = "0." Then Exit Sub
    Me.txtPlusMinus.Value = Me.lblDisplay.Caption
    With Me.txtPlusMinus
    Select Case .Value
    Case Is < 0
    .Value = .Value * -1
    Me.lblDisplay.Caption = .Value
    Case Is >= 0
    .Value = .Value * -1
    Me.lblDisplay.Caption = .Value
    End Select
    End With

    Exit_Procedure:
    On Error Resume Next
    Exit Sub

    err_handler:
    Select Case Err.Number
    Case 13
    Resume Next
    Case Else
    MsgBox "Error No.: " & Err.Number & " " & "Error Description: " & Err.Description
    End Select
    End Sub

    Private Sub cmdSubtract_Click()
    On Error GoTo err_handler

    dblVal1 = Me.lblDisplay.Caption
    strOpr = Me.cmdSubtract.Caption
    Me.txtOpHolder.Value = "-"
    IntTemp = GetTemp

    Exit_Procedure:
    On Error Resume Next
    Exit Sub

    err_handler:
    Select Case Err.Number
    Case 13
    Resume Next
    Case Else
    MsgBox "Error No.: " & Err.Number & " " & "Error Description: " & Err.Description
    End Select
    End Sub

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    On Error Resume Next

    Select Case Shift
    Case 1
    Select Case KeyCode
    Case 56
    cmdMultiply_Click
    Case 187
    cmdAdd_Click
    Case 189
    cmdSubtract_Click
    Case 53
    cmdPercent_Click
    End Select

    Case Else

    Select Case KeyCode
    Case vbKeyEscape
    cmdClear_Click
    Case vbKeyAdd
    cmdAdd_Click
    Case vbKeySubtract
    cmdSubtract_Click
    Case vbKeyDivide
    cmdDivide_Click
    Case vbKeyMultiply
    cmdMultiply_Click
    Case vbKeyDecimal, 190
    cmdDot_Click
    Case 13, 187
    cmdEquals_Click
    Case 113
    cmdSelectCalc_Click
    Case 8
    If Me.lblDisplay.Caption = "0." Then
    Exit Sub
    ElseIf Len(Me.lblDisplay.Caption) > 1 Then
    Me.lblDisplay.Caption = Left(Me.lblDisplay.Caption, Len(Me.lblDisplay.Caption) - 1)
    Else
    Me.lblDisplay.Caption = "0."
    End If
    Case vbKeyNumpad0, vbKey0
    cmd0_Click
    Case vbKeyNumpad1, vbKey1
    cmd1_Click
    Case vbKeyNumpad2, vbKey2
    cmd2_Click
    Case vbKeyNumpad3, vbKey3
    cmd3_Click
    Case vbKeyNumpad4, vbKey4
    cmd4_Click
    Case vbKeyNumpad5, vbKey5
    cmd5_Click
    Case vbKeyNumpad6, vbKey6
    cmd6_Click
    Case vbKeyNumpad7, vbKey7
    cmd7_Click
    Case vbKeyNumpad8, vbKey8
    cmd8_Click
    Case vbKeyNumpad9, vbKey9
    cmd9_Click
    End Select
    End Select
    KeyCode = 0
    End Sub

    Private Sub Form_KeyPress(KeyAscii As Integer)
    On Error Resume Next

    KeyAscii = 0

    End Sub

    Private Sub Form_Load()
    On Error Resume Next

    Me.txtOpHolder.Value = ""
    Me.lblDisplay.Caption = "0."

    End Sub

    Private Sub cmdSelectCalc_Click()
    On Error Resume Next

    TargetTextBox = Me.lblDisplay.Caption
    TargetTextBox.SetFocus
    DoCmd.Close acForm, Me.Name, acSaveNo

    End Sub

    apenas de salientar que no fim aparece cmdselectcalc, é relativo a um módulo, apenas abre um form com uma textbox e a partir da calculadora envia resultado.
    se conseguir resolver a minha dúvida agradeço

    hapintopereira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7
    Registrado : 08/01/2016

    Re: Resultado de calculadora

    Mensagem  hapintopereira em Sex 08 Jan 2016, 19:29

    segue imagem do form
    Anexos
    calculator.bmp
    Você não tem permissão para fazer download dos arquivos anexados.
    (547 Kb) Baixado 7 vez(es)

    FabioPaes
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2328
    Registrado : 14/08/2013

    Re: Resultado de calculadora

    Mensagem  FabioPaes em Sex 08 Jan 2016, 22:36

    Amigão, veja esse tópico, na Mensagem N°3 Tem uma calculadora Muito boa e funciona Perfeitamente.

    [Você precisa estar registrado e conectado para ver este link.]

    hapintopereira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7
    Registrado : 08/01/2016

    Resolvido

    Mensagem  hapintopereira em Sex 08 Jan 2016, 22:37

    consegui, agradeço imenso à mesma, já consegui finalmente, apenas troquei os "0." (zero ponto), por "0," (zero virgula), e já funciona.
    abraços
    e obrigado

    hapintopereira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7
    Registrado : 08/01/2016

    Re: Resultado de calculadora

    Mensagem  hapintopereira em Sex 08 Jan 2016, 22:43

    já vi, e baixei o que me disse, vou ver de seguida, se for mais prático vou utilizar, obrigado
    o código que eu coloquei, até está porreiro, ajustei ao que eu quero, retirei as percentagens, os +/-, etc.. e ela teimava em não dar o valor correto ex(2.4 +2.4 =48), mas com insistência e tentativa e erro lá consegui, fica a resolução para quem precisar e o código está em cima apesar de ela estar disponivel para download na net.
    abraços
    e muito obrigado

    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 2746
    Registrado : 06/11/2009

    Re: Resultado de calculadora

    Mensagem  Assis em Sex 08 Jan 2016, 22:58

    Boa noite

    Tem esta aqui com fita

    [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    *** Só sei que nada sei ***

    hapintopereira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7
    Registrado : 08/01/2016

    Re: Resultado de calculadora

    Mensagem  hapintopereira em Sab 09 Jan 2016, 11:12

    obrigado
    abraços

      Data/hora atual: Sex 09 Dez 2016, 11:31