以文本方式查看主题

-  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=2720)

--  作者:yangming
--  发布时间:2009/5/8 14:28:00
--  请教:部门分月工资表的合计代码
要求,将工资库中的数据,将"实发工资"数按月汇总到部门分月表中,比如,技术部一处,每月的实发工资合计数分别汇总到每个月份列中,各部门的名称要自动生成,请看:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:论坛提问.table


--  作者:狐狸爸爸
--  发布时间:2009/5/8 15:01:00
--  
很经典的统计。

既然工资库有月份列,可以省很多编码的工作量:

DataTables("部门分月工资表").DataRows.Clear()
 dim
f As New Filler
 f.SourceTable =
DataTables("工资库") \'指定数据来源
 f.SourceCols =
"部门" \'指定数据来源列
 f.
DataTable = DataTables("部门分月工资表") \'指定数据接收表
 f.DataCols =
"部门" \'指定数据接收列
 f.Fill()
\'填充数据
 For
Each dc As DataCol In DataTables("部门分月工资表").DataCols
     If
dc.Name.EndsWith("月") Then
         For
Each dr As DataRow In DataTables("部门分月工资表").DataRows
             dr(dc.name) =
DataTables("工资库").Compute("Sum(实发工资)","月份 =\'" & dc.Name & "\' And 部门 = \'" & dr("部门") & "\'")
         Next
     End
If
 Next



 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目27.table

[此贴子已经被作者于2009-5-8 15:08:18编辑过]

--  作者:yangming
--  发布时间:2009/5/8 15:06:00
--  
贺老师,发错文件了
--  作者:狐狸爸爸
--  发布时间:2009/5/8 15:09:00
--  
已经重发了。
--  作者:yangming
--  发布时间:2009/5/8 15:27:00
--  
在二楼的公式后面,我加了一段代码,就可以在窗口的DataList1中显示出来了
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
dst.DataTable = DataTables("部门分月工资表")
dst.Build()

--  作者:狐狸爸爸
--  发布时间:2009/5/8 15:29:00
--  
如果不是要在预先设计好的表格中统计,你何不用交叉统计?这样直接就可以直接生成临时统计表,在DataList中显示,而且编码更加简单。
就像你上一个例子所做的。
--  作者:yangming
--  发布时间:2009/5/8 15:49:00
--  

主要是各部门年终统计的不光是工资,另外还有年终奖及效益工资数,那些都是年底才会有数据的


--  作者:yangming
--  发布时间:2009/5/8 16:06:00
--  
还有一个问题,我还有一张个人分月表,我套用了上面部门的代码,但是我有一节代码不知如何做,请老师帮忙看看:
请看下面红色的那节,关键是"Compute("Sum(实发工资)",  我不会做
DataTables("个人分月工资表").DataRows.Clear()
 dim f As New Filler
 f.SourceTable = DataTables("工资库") \'指定数据来源
 f.SourceCols = "工号,部门,姓名" \'指定数据来源列
 f.DataTable = DataTables("个人分月工资表") \'指定数据接收表
 f.DataCols = "工号,部门,姓名" \'指定数据接收列
 f.Fill() \'填充数据
 For Each dc As DataCol In DataTables("个人分月工资表").DataCols
     If dc.Name.EndsWith("月") Then
         For Each dr As DataRow In DataTables("个人分月工资表").DataRows
             dr(dc.name) = DataTables("工资库").Compute("Sum(实发工资)","月份 =\'" & dc.Name & "\' And 工号= \'" & dr("工号") & "\'")
         Next
     End If
 Next
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
dst.DataTable = DataTables("个人分月工资表")
dst.Build()

就是目前这个代码也可以生成数据
[此贴子已经被作者于2009-5-8 16:10:23编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/5/8 16:10:00
--  
没道理的,将你做好的东西,保留相关表格,发上来看看。
--  作者:yangming
--  发布时间:2009/5/8 16:29:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:2部门分月统计.table

请看此表