以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助统计代码怎么写  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=12346)

--  作者:hsh2055
--  发布时间:2011/8/30 14:46:00
--  [求助统计代码怎么写

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

 


--  作者:紙上不談兵
--  发布时间:2011/8/30 14:54:00
--  
不用代码,交叉统计即可

--  作者:狐狸爸爸
--  发布时间:2011/8/30 15:03:00
--  

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

可以看看这个例子:

http://www.foxtable.com/help/topics/0681.htm

 


--  作者:hsh2055
--  发布时间:2011/8/30 15:28:00
--  
不行,张三201101应该为100,201104为85,但代码统计的数据全部是185.
--  作者:狐狸爸爸
--  发布时间:2011/8/30 15:30:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目55.rar


--  作者:hsh2055
--  发布时间:2011/8/30 15:55:00
--  

没有弄清语句的意思。

能不能不用FOR语句,直接用IF 语句,即直接统计张三总金额,李四总金额,因为姓名就那么几个。


--  作者:狐狸爸爸
--  发布时间:2011/8/30 15:59:00
--  

这样好,通用,否则增加、删除、修改人员,你就需要重新修改代码。

 


--  作者:hsh2055
--  发布时间:2011/8/30 16:03:00
--  

不需要通用


--  作者:hsh2055
--  发布时间:2011/8/30 16:06:00
--  

是不是这样:

Dim dr As DataRow = e.DataRow
Dim
dt As DataTable =DataTables("明细表")
If
e.DataCol.Name = "时间" And dr.IsNull("时间") = False Then
    dr(
"张三总金额") = dt.Compute("sum(金额)")
 
End
If


--  作者:狐狸爸爸
--  发布时间:2011/8/30 16:06:00
--  

如果这样的话:

 

 

If e.DataCol.Name = "时间" Then
    e.DataRow("张三总金额") = DataTables("明细表").Compute("Sum(金额)","姓名 = \'张三\' And 时间 = \'"  & e.DataRow("时间") & "\'")
    e.DataRow("李四总金额") = DataTables("明细表").Compute("Sum(金额)","姓名 = \'李四\' And 时间 = \'"  & e.DataRow("时间") & "\'")
    e.DataRow("王五总金额") = DataTables("明细表").Compute("Sum(金额)","姓名 = \'王五\' And 时间 = \'"  & e.DataRow("时间") & "\'")
    e.DataRow("赵六总金额") = DataTables("明细表").Compute("Sum(金额)","姓名 = \'赵六\' And 时间 = \'"  & e.DataRow("时间") & "\'")
End If