Foxtable(狐表)用户栏目专家坐堂 → 工龄自动计算问题


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

主题:工龄自动计算问题

帅哥哟,离线,有人找我吗?
douglas738888
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1176 积分:8797 威望:0 精华:0 注册:2012/4/18 16:28:00
工龄自动计算问题  发帖心情 Post By:2012/6/8 10:43:00 [只看该作者]

请老师们,看看这个关于计算工资的代码,昨天输入到表属性时经测试可用也计算准确,今天再打开的时候无法计算,且自动生成的“工资”列不见了;如果新输入新员工入司时间后又出现“工资”列并准确计算,再次从新打开软件又出现同样的问题,不知是什么问题,是否以下代码编制有问题,特请教!!!!

 

Dim dt As DataTable = DataTables("集团员工档案")
If dt.DataCols.Contains("工齡") = False Then 
    dt.DataCols.Add("工齡", Gettype(Double))
End If
Dim drs As New List(of DataRow)
drs = dt.Select("入司时间 is not Null")
For Each dr As DataRow In drs
    dr("工齡") = Math.Round(DateDiff("m",dr("入司时间"),Date.Today())/12,1)
Next

[此贴子已经被作者于2012-6-8 11:06:33编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47511 积分:251479 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/6/8 10:57:00 [只看该作者]

你用代码增加的临时列,重新打开后,肯定就不存在了的。

工龄列通过菜单增加,在AfterOpenProject事件加入代码:

 

Dim dt As DataTable = DataTables("集团员工档案")
Dim drs As New List(of DataRow)
drs = dt.Select("入司时间 is not Null")
For Each dr As DataRow In drs
    dr("工齡") = Math.Round(DateDiff("m",dr("入司时间"),Date.Today())/12,1)
Next

 


 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1176 积分:8797 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2012/6/8 11:49:00 [只看该作者]

谢谢狐爸,已能显示和计算,但是有一个问题,当输入新员工的入司日期后,不会马上显示计算的数据,需要关闭程序,再次进入程序后才显现数据,不知直接显示的代码如何编制。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47511 积分:251479 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/6/8 16:51:00 [只看该作者]

设置这个表的DAtaColChanged事件:
 
Select Case e.DataCol.Name
    case “入司时间"

         Dim dr As datarow = e.Datarow
         if dr.IsNull("入司时间") Then

                dr("工龄") = Nothing

         else

               dr("工齡") = Math.Round(DateDiff("m",dr("入司时间"),Date.Today())/12,1)

         end if

End Select
 
 


 回到顶部