以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教动态表达式  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=59884)

--  作者:feiyu988
--  发布时间:2014/11/12 21:14:00
--  请教动态表达式

请问能不能实现,在动态增加列(列名统一有相同前缀“月计划\')的同时,在”合计“列对所有月计划列数量汇总


--  作者:有点甜
--  发布时间:2014/11/12 21:16:00
--  

1、你这样设计,肯定是不合理的。

 

2、你可以在afteropenproject事件,循环所有的列,满足条件的,合并成表达式,设置进去即可。


--  作者:feiyu988
--  发布时间:2014/11/12 21:26:00
--  
那可以在窗口的afterload事件中增加临时合计列来实现这个功能吗,就是打开单独的窗口来合计,如果可以,这个表达式应该怎样设计呢
--  作者:有点甜
--  发布时间:2014/11/12 21:29:00
--  
 

Dim str As String = ""
For Each dc As DataCol In DataTables("表A").DataCols
    If dc.Name.StartsWith("第") Then
        str &= dc.Name & "+"
    End If
Next

DataTables("表A").DataCols.Add("合计", Gettype(Double), str.Trim("+"))


--  作者:feiyu988
--  发布时间:2014/11/12 21:35:00
--  
这个("第") 指的是("月计划”)前缀吗?,好像像不管用,各列的名称是不一样的,只是有一个相同前缀“月计划”
--  作者:有点甜
--  发布时间:2014/11/12 21:37:00
--  
肯定有效
--  作者:feiyu988
--  发布时间:2014/11/12 21:40:00
--  

Dim str As String = ""
For Each dc As DataCol In DataTables("材料表").DataCols
    If dc.Name.StartsWith("月计划") Then
        str &= dc.Name & "+"
    End If
Next

DataTables("材料表").DataCols.Add("合计", Gettype(Double), str.Trim("+"))

 

是这样吗/


--  作者:有点甜
--  发布时间:2014/11/12 21:41:00
--  

Dim str As String = ""
For Each dc As DataCol In DataTables("材料表").DataCols
    If dc.Name.StartsWith("月计划") Then
        str &= "isnull(" & dc.Name & ",0)+"
    End If
Next

DataTables("材料表").DataCols.Add("合计", Gettype(Double), str.Trim("+"))


--  作者:feiyu988
--  发布时间:2014/11/12 21:47:00
--  
OK了,我的列属性是高精度小数,代码是双精度就不显示结果,改为高精度就OK了