Foxtable(狐表)用户栏目专家坐堂 → 如何用代码增加合计列


  共有11419人关注过本帖树形打印复制链接

主题:如何用代码增加合计列

帅哥哟,离线,有人找我吗?
caoxy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
如何用代码增加合计列  发帖心情 Post By:2011/3/25 18:22:00 [只看该作者]

师傅你好:请帮我加代码

1、在开始日期和结束日期之间统计不同品种的数量;

2、现在有底行合计,请帮我加一列合计代码;

Dim khs As List(of String) = DataTables("出口处理").GetUniqueValues("用盘单位 > ''", "用盘单位")
Dim pds As List(of String) = DataTables("出口处理").GetUniqueValues("品种1  > ''", "品种1")
Dim dt AS New DataTableBuilder("处理数量")
dt.AddDef("客户", Gettype(String), 32)
For i As Integer = 2 To 8
    Dim lst As List(of String)  = DataTables("出口处理").GetUniqueValues("品种" & i &  " > ''", "品种" & i)
    For Each nm AS String In Lst
        If pds.Contains(nm) = False
            pds.Add(nm)
        End If
    Next
Next
For Each pd As String In pds
    dt.AddDef(pd, Gettype(Integer))
Next
dt.Build
Dim tb AS Table = Tables("处理数量")
Dim Sum AS Integer
For Each kh As String In khs
    Dim r As Row = tb.AddNew()
    r("客户")  = kh
    For Each pd As String In pds
        sum = 0
        For i As Integer = 1 To 8
            sum = sum + DataTables("出口处理").Compute("Sum(数量" & i & ")", "品种" & i & " = '" & pd & "' And 用盘单位 = '"  & kh & "'")
        Next
        r(pd) = sum
    Next
Next
Dim sr As Row = tb.AddNew()
sr("客户") = "合计"
For Each pd As String In pds
    sum = 0
    For Each r AS Row In tb.Rows
        sum = sum + r(pd)
    Next
    sr(pd) = sum
Next

谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/25 18:23:00 [只看该作者]

最后面加上:

 

dt.DataCols.Add("合计",Gettype(Double))
Dim sum As Double
For Each dr As DataRow In dt.DataRows
    sum = 0
    For Each dc As DataCol In dt.DataCols
         If dc.IsNumeric Then
             sum = dr(dc.name) + sum
         End If  
    Next
    dr("合计") = sum
Next


 回到顶部
帅哥哟,离线,有人找我吗?
caoxy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By:2011/3/25 19:01:00 [只看该作者]

加的代码出现错误:

编译错误:“datacols”不是"datatablebuildqr"

错误代码:dt.DataCols.Add("合计",Gettype(Double))


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/25 20:14:00 [只看该作者]

Dim tbl As DataTable = DataTables("处理数量")

tbl.DataCols.Add("合计",Gettype(Double))
Dim sum As Double
For Each dr As DataRow In tbl.DataRows
    sum = 0
    For Each dc As DataCol In tbl.DataCols
        If dc.IsNumeric Then
            sum = dr(dc.name) + sum
        End If
    Next
    dr("合计") = sum
Next


 回到顶部
帅哥哟,离线,有人找我吗?
caoxy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By:2011/3/26 7:20:00 [只看该作者]

又出现了错误

当前块中已局部变量:“SUM”

错误代码:Dim sum As Double


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/26 7:52:00 [只看该作者]

既然前面定义了,那就不要定义变量sum,或者换个名字都行。

 

Dim tbl As DataTable = DataTables("处理数量")

tbl.DataCols.Add("合计",Gettype(Double))
For Each dr As DataRow In tbl.DataRows
    sum = 0
    For Each dc As DataCol In tbl.DataCols
        If dc.IsNumeric Then
             sum = dr(dc.name) + sum
       End If
    Next
     dr("合计") = sum
Next


 回到顶部
帅哥哟,离线,有人找我吗?
caoxy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By:2011/3/26 9:28:00 [只看该作者]

 现在出现了:systcm.formatexceptiom  该字符串未被识别有效的 dateTime 有一个从索引0处开始的未知字

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/26 9:50:00 [只看该作者]

我的代码不会有这个错误提示,看看你自己的代码,搞不定传表上来。

 回到顶部
帅哥哟,离线,有人找我吗?
caoxy
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:299 积分:1939 威望:0 精华:0 注册:2011/3/9 18:17:00
  发帖心情 Post By:2011/3/26 10:28:00 [只看该作者]

就是顶部代码


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/26 10:38:00 [只看该作者]

没有数据,无法测试。

 回到顶部