Foxtable(狐表)用户栏目专家坐堂 → 代码问题


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

主题:代码问题

美女呀,离线,留言给我吧!
yangming
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/8/30 11:23:00 [显示全部帖子]

工资库中增加一列"月份",字符型,并在此表的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编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/8/30 12:03:00 [显示全部帖子]

以下是引用wgllvyue在2011-8-30 12:00:00的发言:

谢谢啊,可以了,真是太牛了,佩服啊

我们是同行,正好我原来也做过类似的统计表,所以直接拿来用了,呵,互相学习,共同进步!


 回到顶部
美女呀,离线,留言给我吧!
yangming
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/8/30 13:59:00 [显示全部帖子]

以下是引用紙上不談兵在2011-8-30 13:24:00的发言:
[个人分月统计],[部门分月统计],两个表根本没存在的必要:交叉统计即可:

Dim b As New CrossTableBuilder("个人分月统计",DataTables("工资考勤库"))
b.HGroups.AddDef("序号") '
b.HGroups.AddDef("部门") 
b.HGroups.AddDef("姓名") 
b.VGroups.AddDef("日期","{0}月") 
b.Totals.AddDef("实发工资") 
b.HorizontalTotal =True
b.VerticalTotal =True
b.Decimals =2
b.Build '生成统计表
MainTable = Tables("个人分月统计") '打开生成的统计表

是的,呵,但是各单位有各单位的要求,比如,我单位这张表中还有其它列,比如单项奖,年终奖,这些都是到年底才会有数据的,而且又是从其它的表中引用过来的,所以就要求有一个表存在,呵

[此贴子已经被作者于2011-8-30 14:01:04编辑过]

 回到顶部