设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 3633|回复: 20
打印 上一主题 下一主题

[模块/函数] 非常简单实用的计算器

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-26 19:35:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 todaynew 于 2009-3-26 19:50 编辑

  使用Windos计算器想返回计算结果比较麻烦,看了一些用VB编写计算器也忒复杂了。想来不应该将简单问题复杂化。于是乎便决定用尽可能少而且易于理解的语句编写一个计算器,于是花了半天时间算是折腾出来了。

      实际上编写计算器的关键语句就是一条,也就是Eval函数。这个函数可以将一个字符串表示的算式计算出结果了。按照这个思路下去,你只是需要得到一个用阿拉伯数字和运算符号连接起来的字符串了,这样一来问题就十分简单了。具体怎么搞定,你可以去看看代码。

     倒是在调用计算器并将计算结果写入指定控件处,着实费了些周折。周折处主要有二,其一是被OpenArgs参数迷惑了个把小时,几经摸索算是搞明白了所以然;其二是获得当前控件的名称,折腾好一阵也没搞清楚,好在经t小宝同志指点,终于豁然开朗。

     闲话不多说了,贴上来给同志们参考一下。





主窗体:
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

myCalc窗体:
Private Sub 等于_Click()
Dim str As String
Dim Pfname As String
Dim Sfname As String
Dim Cname As String
On Error GoTo 等于_Err
    If IsNull(Me.计算.Value) = False Then
        Me.计算.Value = Eval(Me.计算.Value)
    Else
         Me.计算.SetFocus
        Exit Sub
    End If
    If OpenArgs <> "" Then
        str = OpenArgs
        Pfname = Mid(str, 1, InStr(1, str, ",") - 1)
        str = Replace(str, Pfname & ",", "")
        If InStr(1, str, ",") = 0 Then
            Sfname = Pfname
            Cname = str
            Forms(Sfname).Form.Controls(Cname).Value = Me.计算.Value
        Else
            Sfname = Mid(str, 1, InStr(1, str, ",") - 1)
            str = Replace(str, Sfname & ",", "")
            Cname = str
            Forms(Pfname).Controls(Sfname).Form.Controls(Cname).Value = Me.计算.Value
        End If
        DoCmd.Close acForm, "myCalc"
    End If
等于_Exit:
    Exit Sub
等于_Err:
    Me.计算.Value = "兄弟,搞错了吧?!^o^  "
    Resume 等于_Exit
End Sub


Private Sub L0_Click()
    Me.计算.Value = Me.计算.Value & Me.L0.Caption
End Sub
。。。。。

(VBA基础-相关文章技巧链接):
Access非常简单实用的计算器

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-3-26 19:51:57 | 只看该作者
  使用Windos计算器想返回计算结果比较麻烦,看了一些用VB编写计算器也忒复杂了。想来不应该将简单问题复杂化。于是乎便决定用尽可能少而且易于理解的语句编写一个计算器,于是花了半天时间算是折腾出来了。

   ...
todaynew 发表于 2009-3-26 19:35


多谢老师
3#
发表于 2009-3-26 20:04:06 | 只看该作者




******************
*  一切皆有可能  *
******************

.
ACMAIN - Access论坛回贴准则(个人).
.

4#
发表于 2009-3-26 20:09:30 | 只看该作者
支持
5#
 楼主| 发表于 2009-3-26 21:16:41 | 只看该作者
谢谢同志们!
6#
发表于 2009-3-26 21:28:04 | 只看该作者
的确好用,会代码就是好,可惜我是学不会了!
7#
发表于 2009-3-27 09:43:16 | 只看该作者
支持!你想个办法,把动态效果(如经过时变色、按下时下沉)加到“按钮”(实际上是标签)上,更传神~~
8#
发表于 2009-3-27 12:38:41 | 只看该作者
學習了~
9#
 楼主| 发表于 2009-3-27 21:06:57 | 只看该作者
支持!你想个办法,把动态效果(如经过时变色、按下时下沉)加到“按钮”(实际上是标签)上,更传神~~
老鬼 发表于 2009-3-27 09:43

好的,好像可以用调整特殊样子和前后景颜色解决。
10#
发表于 2009-3-28 10:33:11 | 只看该作者
收藏了,对我有启发
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-26 00:11 , Processed in 0.096495 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表