以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]表达式计算  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=56614)

--  作者:建筑人生
--  发布时间:2014/9/9 21:46:00
--  [求助]表达式计算

管道小计=水平段+开关+配电箱

 

Dim dr As DataRow

Select Case  e.DataCol.Name
    Case "计算公式_水平","计算公式_垂直_开关","计算公式_垂直_配电箱"

       
     dr("管道_小计") =eval(dr("计算公式_水平"),dr)+eval(dr("计算公式_垂直_开关"),dr)+eval(dr("计算公式_垂直_配电箱"),dr)

       
End Select

提示错误


图片点击可在新窗口打开查看此主题相关图片如下:01.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2014-9-11 14:29:02编辑过]

--  作者:有点甜
--  发布时间:2014/9/9 21:50:00
--  

Dim dr As DataRow = e.DataRow

Select Case  e.DataCol.Name
    Case "计算公式_水平","计算公式_垂直_开关","计算公式_垂直_配电箱"
       
       
        dr("管道_小计") =eval(dr("计算公式_水平"))+eval(dr("计算公式_垂直_开关"))+eval(dr("计算公式_垂直_配电箱"))
          
End Select


--  作者:建筑人生
--  发布时间:2014/9/9 21:58:00
--  
谢谢,如果在计算公式增加[注释],要怎么写    比如:1+2*3+5[四楼],结果是 12,要如何写
--  作者:有点甜
--  发布时间:2014/9/9 22:10:00
--  

 参考代码

 

Dim str As String = "1+2*3+5[四楼]"
Dim reg As new System.Text.RegularExpressions.Regex("[^0-9+\\-*/]")
msgbox(reg.Replace(str, ""))


--  作者:建筑人生
--  发布时间:2014/9/9 22:15:00
--  
你太牛了,谢谢,我慢慢琢磨
--  作者:建筑人生
--  发布时间:2014/9/9 22:59:00
--  

Dim dr As DataRow=e.DataRow

Dim reg As new System.Text.RegularExpressions.Regex("[^0-9+\\-*/]")

Select Case  e.DataCol.Name
    Case "计算公式_水平","计算公式_垂直_开关","计算公式_垂直_配电箱"


       
dr("管道_小计") =val(reg.replace(dr("计算公式_水平"),""))

End Select

 

 

 

我这样写怎么还是不对,奇怪 我输入 96[1+2+**6]  会等于961


--  作者:有点甜
--  发布时间:2014/9/9 23:02:00
--  

 应该等于多少?你的方括号加入运算?等于 96 * (1+2+6) ?


--  作者:建筑人生
--  发布时间:2014/9/9 23:07:00
--  
96啊
--  作者:有点甜
--  发布时间:2014/9/9 23:08:00
--  

Dim str As String = "96[1+2+**6]"
Dim reg As new System.Text.RegularExpressions.Regex("\\[.*\\]")
msgbox(reg.Replace(str, ""))

--  作者:建筑人生
--  发布时间:2014/9/9 23:09:00
--  
比如我再    计算公式_水平 输入1+2*3+9[1236kkkk],在小计=16才对,就是[ ]内所有东西都不参与计算