在Access中编写计算器程序,主要使用`Eval`函数来计算字符串表示的算式。以下是一个简单的示例,展示了如何实现这一功能:
创建主窗体和子窗体
主窗体包含一个按钮,用于打开计算器子窗体。
子窗体包含输入框和按钮,用于输入数字和运算符,并显示计算结果。
编写代码
在主窗体的`折让_DblClick`事件中,打开计算器子窗体,并将当前激活的控件名称传递给子窗体。
在子窗体的`数量_DblClick`事件中,同样将当前激活的控件名称传递给主窗体。
在计算器子窗体的`等于_Click`事件中,使用`Eval`函数计算输入的算式,并将结果显示在指定的控件中。
```vba
' 主窗体代码
Private Sub 折让_DblClick(Cancel As Integer)
' 请在OpenArgs参数中,用,号分割主窗体、子窗体控件、控件名称
Dim Ctlname As String
Ctlname = Screen.ActiveControl.Name
DoCmd.OpenForm "myCalc", Me.Form.Name & "," & Ctlname
End Sub
' 子窗体代码
Private Sub 数量_DblClick(Cancel As Integer)
' 请在OpenArgs参数中,用,号分割主窗体、子窗体控件、控件名称
Dim Ctlname As String
Ctlname = Screen.ActiveControl.Name
DoCmd.OpenForm "myCalc", Me.Parent.Form.Name & "," & Me.Form.Name & "," & Ctlname
End Sub
' 计算器子窗体代码
Private Sub 等于_Click()
Dim str As String
Dim Pfname As String
str = txta.Value & txtb.Value & op
Pfname = "Result"
Me.Result.Value = Eval(str)
End Sub
' 运算符按钮代码(例如加法)
Private Sub cmd1_Click()
Labela.Caption = "+"
txtc.Value = op(txta.Value, txtb.Value, "+")
End Sub
' 运算符按钮代码(例如减法)
Private Sub cmd2_Click()
Labela.Caption = "-"
txtc.Value = op(txta.Value, txtb.Value, "-")
End Sub
' 辅助函数,用于执行运算
Private Function op(num1 As Variant, num2 As Variant, optr As String) As Variant
Select Case optr
Case "+"
op = num1 + num2
Case "-"
op = num1 - num2
Case "*"
op = num1 * num2
Case "/"
If num2 <> 0 Then
op = num1 / num2
Else
MsgBox "除数不能为零"
op = CVErr(2001)
End If
Case Else
MsgBox "无效的运算符"
op = CVErr(2002)
End Select
End Function
```
说明:
主窗体和子窗体
`折让_DblClick`和`数量_DblClick`事件用于打开计算器子窗体,并将当前激活的控件名称传递给子窗体。
`等于_Click`事件用于计算输入的算式,并将结果显示在`Result`控件中。
计算器子窗体
`txta`和`txtb`用于输入两个数字。
`op`按钮用于选择运算符(+、-、*、/)。
`Result`控件用于显示计算结果。
辅助函数`op`
根据选择的运算符执行相应的运算,并处理除数为零的情况。
通过这种方式,你可以在Access中创建一个简单的计算器程序,用户可以通过输入数字和运算符来计算结果。