以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  人事系统关于跨表选取的代码求助,请高人解答。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=16598)

--  作者:nevercool
--  发布时间:2012/2/18 13:35:00
--  人事系统关于跨表选取的代码求助,请高人解答。
问题较多,烦请高人解答。 附件中“登记表”为员工登记信息, 在“工资表”中能否实现如下功能: 1.第一次做工资时,“工资表”月份输入后,将“登记表”中目前所有部门、职务、姓名填入“工资表”对应列中,避免手工输入繁琐、出错。(能否在表中同时将部门相同的单元格合并?就类似数据统计中的那样,更好看些) 2."登记表"中选择员工离职时,将员工信息全部转移至“离职表”中,“登记表”不再显示,以免做工资时人员出错。 3.以后再做工资时,输入不同月份后,自动将上月工资表中的信息全部引用,如有个别工资变动的手工修改即可。 在“劳动合同”中实现如下功能: 1、部门、姓名列与“登记表”同步增加,对于离职人员做单元格颜色标记。 2、日期计算问题,到期时间=签订日期+签订期限+续签期限。(期限是下拉选项中的固定值) 麻烦大家最好给上传附件中的代码写上注释,以便理解学习,谢谢!!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试表.table


--  作者:狐狸爸爸
--  发布时间:2012/2/18 14:19:00
--  

1、你可以做个按钮,单击这个按钮,自动增加所有员工,并填入部门、职务、姓名等列的内容,按钮代码为:

 

DataTables("工资表").DataRows.Clear()
Dim f As new Filler
f.SourceTable = DataTables("登记表")
f.DataTable = DataTables("工资表")
f.DataCols = "职务,姓名,部门"
f.Fill

 

2、很简单,设置等级表的DataColChanged事件:

 

Select Case e.DataCol.Name
    Case "离职"
        If e.DataRow("离职") = True Then
            Dim dr1 As DataRow = e.DataRow
            Dim dr2 As DataRow = DataTables("离职表").AddNew()
            For Each dc As DataCol In e.DataTable.DataCols
                If DataTables("离职表").DataCols.Contains(dc.name) Then
                    dr2(dc.name) = dr1(dc.name)
                End If
            Next

            dr1.Delete
        End If
End Select

 

3、也简单,做个按钮,将上个月的所有行“克隆”一下即可。

 

4、同步增加行,也很简单,将登记表的BeforeSaveDataRow事件代码设置为:

 

If e.DataRow.RowState = DataRowState.Added Then
    Dim dr1 As DataRow = e.DataRow
    Dim dr2 As DataRow = DataTables("劳动合同").AddNew()
    For Each dc As DataCol In e.DataTable.DataCols
        If DataTables("劳动合同").DataCols.Contains(dc.name) Then
            dr2(dc.name) = dr1(dc.name)
        End If
    Next
End If

 

5、至于日期计算,续签期限应该改为数值型,1表示1年,1.5表示一年半。

 

最后的建议,提问应该一个一个问题来,不要一次一大堆,解决一个,学习一个,尝试下一个,解决不了,再上论坛提问。

毕竟是你在开发系统。