Office中国论坛/Access中国论坛

标题: 多年没来了,厚颜求教复合字段求和问题。 [打印本页]

作者: WTM1    时间: 2008-11-18 18:28
标题: 多年没来了,厚颜求教复合字段求和问题。
[:34] 各位好,我最后一次来时06年,已经这么多年了哈哈,这次遇到了一个技术难题,特来求教。
原本对我来说应该不难的问题,可我长期不从事access编程了,把基本的东西都已经忘记了,现在只能翻书来查资料了,丢人呀。

问题是:
在同一个字段内,比如字段名为肉类
填写数值 猪肉:100 牛肉:100 鸡肉:100 羊肉:100
这个数值是复制的格式统一,只是数值不同。
这个肉类字段可以不写表,直接在在窗体中用文本框表示。
然后下面是车次
将肉类字段内数值累加后自动除以车次数,车次数值为手工填写的数值。
在总计框内自动写入最后所得。
这个问题就是如何剔除汉字,仅仅要求数值计算,但是输入时候会填写汉字+数值的格式也就是牛肉: 100这样子数值。怎么才能累加运算出结果然后除以车次。

当然了除以车次这个我会,就是忘记了如何才能剔除汉字进行运算。所以特来求教各位。请指教。万分感谢。
作者: tmtony    时间: 2008-11-18 20:42
老兄,老久不见了, 现在做什么工作了?
下面这贴看看是否对你有用,是江版主的贴子
http://www.office-cn.net/forum.p ... ighlight=%2Btanhong
作者: Henry D. Sy    时间: 2008-11-18 22:04
这个问题主要是去掉  “汉字:”
可以用 mid 和 instr 函数
纯数值字段=clng(mid(字段名,instr(字段名,":")+1))
作者: WTM1    时间: 2008-11-19 08:13
[:30] 感谢各位的回答,我没看明白。
猪肉:100 牛肉:100 鸡肉:100 羊肉:100
如何去掉汉字:然后把数字进行计算得出结果然后除以车次。

熬了一个通宵,没有做出来,不是这错就是那错。一个程序就这个一步做不错来没办法交差了。
老兄都来帮帮兄弟吧。
作者: Henry D. Sy    时间: 2008-11-19 08:32
你的例子具体是如何的,要不你把例子传上来
作者: WTM1    时间: 2008-11-19 09:34
例子很简单的,给你一个窗体,地址在http://www.namipan.com/d/%e6%96% ... 9936e16d54300500200
作者: WTM1    时间: 2008-11-19 09:57
整体源程序属于商业的,所以只能给你新建立一个文件,画了一个界面,这个功能部件就是,在肉类文本框内输入猪肉:100 牛肉:100 鸡肉:100 羊肉:100,这样的文本信息。

这个信息是复制的,是统一的,不会变的,只是数字会变。

车次文本框手工输入次数,比如10

点击计算,自动在合计里面计算出来结果。

这个程序不需要写表,只要进行运算就可以了。

例如:猪肉:100 牛肉:100 鸡肉:100 羊肉:100
车次:10
合计(猪肉:100+ 牛肉:100+ 鸡肉:100+ 羊肉:100)/10=合计数

就是剔除汉字和冒号以后进行累加计算然后和车次相除求合计数。在合计文本中显示结果。

难为死我了

另外回答tmtony老兄
我现在在国家军工单位服务,被国家聘用了,吃公家粮了。主要从事管理。因为工作涉密,就不多说了。
这次受命给一个储备库设计一个统计程序,我用dp和vb还有pb都写了程序,但是人家非要acc的。要求整体都是acc直接不用exe界面。。。

后来我亲自考察了一下,他们的系统是独立的专用的,只有一个数据解释器可以解析mdb数据,也可以对他的函数和运行进行模拟。access数据库反而能用,当然了数据库也必须低于03版,07压根不支持。

这个计算界面是人家要求的,要即刻完工,我都准备封装程序了,结果这个做不出来了,急死我了。熬了2天2夜了,来帮忙吧。谢谢
作者: kangking    时间: 2008-11-19 10:43
Public Function WWWW(a As String, c As Integer)
'使用方法:wwww("猪肉:100 牛肉:100 鸡肉:100 羊肉:100",10)
    Dim i As Integer
    Dim b As Boolean
    Dim s As String

    For i = 1 To Len(a)
        If Asc(Mid(a, i, 1)) > 47 And Asc(Mid(a, i, 1)) < 58 Then
            b = True
        Else
            b = False
        End If
        If b Then
            s = s & Mid(a, i, 1)
        Else
            s = s & "+"
        End If

    Next
    WWWW = Eval(s) / c
End Function

对楼主说的情况可以计算出来,不知道这个是不是特例。
作者: kangking    时间: 2008-11-19 10:48
上面的逻辑变量是多余的,下面这样就好。

Public Function WWWW(a As String, c As Integer)
'使用方法:wwww("猪肉:100 牛肉:100 鸡肉:100 羊肉:100",10)
    Dim i As Integer
    Dim s As String

    For i = 1 To Len(a)
        If Asc(Mid(a, i, 1)) > 47 And Asc(Mid(a, i, 1)) < 58 Then
            s = s & Mid(a, i, 1)
        Else
            s = s & "+"
        End If
    Next
    WWWW = Eval(s) / c
End Function
作者: WTM1    时间: 2008-11-19 10:50
请直接修改源程序上传,我看看效果谢谢。http://www.namipan.com/d/%e6%96%b0%e5%bb%ba%20Microsoft%20Office%20Access%20%e8%8c%bc%e8%9a%9a%e6%9c%80%e5%94%97.mdb/7a41c240d260d2633ed07dfc452ad9936e16d54300500200
作者: kangking    时间: 2008-11-19 11:04
复制"猪肉:100 牛肉:100 鸡肉:100 羊肉:100"到第一个文本框(去掉引号),在第二个框输入数字,点击计算,在第三个框出现结果。(只是示例,没有错误处理)
作者: Henry D. Sy    时间: 2008-11-19 11:50
[:17] [:17]
作者: WTM1    时间: 2008-11-19 12:22
太感谢了,谢谢呀,只要能做出计算就很满足了,万分之感谢。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3