以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何编写以下的计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=19914)

--  作者:hnzcz
--  发布时间:2012/5/24 21:06:00
--  如何编写以下的计算

如何编写以下的计算

1+2[备注]

在另一列中得出结果3

其中[]数据的是说明,里面的内容不参与计算


--  作者:mr725
--  发布时间:2012/5/24 21:50:00
--  
 Tables("ls").current("计算结果列") = Eval(Tables("ls").current("1+2[备注]列").split("[")(0))
--  作者:hnzcz
--  发布时间:2012/5/24 23:17:00
--  我有时不止一个 就不对了
2+3[明天]+9[后]
--  作者:mr725
--  发布时间:2012/5/25 0:15:00
--  

多少个都可以:

Dim x As String = "2+9[前天]+3[昨天]+9[今天后]+3[明天]+9[后天]+3[大后天] "
Dim ss As String() = x.split("[")
Dim n As Integer
Dim s As String
For i As Integer = 0 To ss.length-2
    If ss(i).contains("]") = False
        s = ss(i)
    Else
        s = s & ss(i).split("]")(1)
    End If
Next
output.show(eval(s))


--  作者:hnzcz
--  发布时间:2012/5/25 20:14:00
--  还有些问题
谢谢你的回复
还有些问题

怎样第二列的计算结果是第三列的数据

我的计算式有几种情况的,根据你做的公式
2+3。。。。。。。。。。。错误提示
2+3[天天]
2+3[天天]+99[向上]
2+3[天天]+99。。。。。。。。。。。。。结果是5,应该是104
括号内的内容是数据的说明,但是不是所有情况要说明的
现在是红色字体的这种情况,还是不正确的

[此贴子已经被作者于2012-5-25 20:25:49编辑过]

--  作者:mr725
--  发布时间:2012/5/26 16:21:00
--  

你不要一点点的加条件嘛,那样没人可以满足你的····


Dim x As String = "2+3[天天]+99+22[kk]+77+55[66]" 
Dim ss As String() = x.split("+")
Dim n As Integer
Dim s As String
For i As Integer = 0 To ss.length-1
    If ss(i).contains("[")
        s = s & left(ss(i),ss(i).LastIndexOf("[")) & " + " 

    Else
        s = s & ss(i) & " + "  

    End If
Next
output.show(eval(left(s,s.LastIndexOf("+")) ))


--  作者:hnzcz
--  发布时间:2012/5/27 8:26:00
--  还有些问题
我以前用易表有个公式的套用上去就可以了,所有我原先以为,你给我例子我修改一下就可以了,但没想到易表和狐表差别那么大,我自己做不出来,麻烦你了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目36.table


我的思路就是,第一列是一个计算公式,有时候数据后面要加个[]来说明数据的来源,然后在第二列中汇总,数据有时候要在后面加[]来源,有时候是不用加的
总的思路就是,[]里面的内容是不参加计算为结果的
[此贴子已经被作者于2012-5-27 8:33:53编辑过]

--  作者:don
--  发布时间:2012/5/27 10:27:00
--  
Dim x As String = "-111+(11+6[kkk]/36^2[kkk])"
Dim n1,n2 As Integer
Dim s1 As String

Do While x.Contains("[")  
   n1=x.LastIndexOf("[")  
   n2=x.LastIndexOf("]")   
   s1=x.SubString(n1,n2-n1+1) 
   x=x.Replace(s1,"")   
Loop

If "+-*/^".Contains(right(x,1)) Then
    x=Left(x,x.Length-1)
End If
output.show(Eval(x))  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目36.table