工资库中增加一列"月份",字符型,并在此表的DataColChanged事件中加如下代码
Dim dr As DataRow =e.DataRow
If e.DataCol.Name ="日期" Then
If dr.IsNull("日期") = False Then
dr("月份") = MonthName(dr("日期").Month)
Else
dr("月份") = Nothing
End If
End If
部门统计按钮代码:
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
个人统计代码:
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
建议你还是加个工号列,并以工号做为唯一标识,以工号做为关联列,万一你以后单位出现同名同姓的员工呢?以现在姓名列做标识,就会出错
[此贴子已经被作者于2011-8-30 11:29:33编辑过]