Foxtable(狐表)用户栏目专家坐堂 → 怎样计算工龄


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

主题:怎样计算工龄

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


加好友 发短信
等级:婴狐 帖子:51 积分:402 威望:0 精华:0 注册:2011/8/25 10:40:00
怎样计算工龄  发帖心情 Post By:2011/9/15 12:55:00 [只看该作者]

员工表里有入职日期(INDATE),怎样添加一表达式列,自动计算其工龄?也就是说,怎样拿当前的日期减去入职业日期,通过一定的运算,换算成年数(带一位小数,例如,5.5 年)?

 

我是婴狐,初入门,确实需要朋友帮助一下。

 

谢谢!

 


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/9/15 13:01:00 [只看该作者]

參考


示例

例如年龄列由出生日期计算得出,我们将DataColChanged事件设为:

If e.DataCol.Name = "出生日期" Then
    If 
e.DataRow.IsNull("出生日期") Then '如果没有输入出生日期
        
e.DataRow("年龄") = Nothing '则清空年龄
    Else
    
    '否则计算年龄
        
e.DataRow("年龄") = Date.Today.Year - e.DataRow("出生日期").Year

    End If
End If

如果到了明年,需要重新计算年龄列,但是除非你重新输入出生日期,否则上面的代码是不会重算年龄的。
不过你可以通过下面的代码,强行针对出生日期列触发DataColChanged,效果就像你重新输入了出生日期一样:

DataTables("员工").DataCols("出生日期").RaiseDataColChanged()

执行某列的RaiseDataColChanged方法,等于“欺骗”性地通知系统:这一列(被重置的列)的内容发生了变化;系统收到这个虚假通知后,开始执行DataColChanged事件代码,间接实现了重算的目的。
显然,为了重新计算年龄,只能执行出生日期列的RaiseDataColChanged方法,因为只有出生日期列的内容发生变化,年龄才会被重算。


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


加好友 发短信
等级:婴狐 帖子:51 积分:402 威望:0 精华:0 注册:2011/8/25 10:40:00
  发帖心情 Post By:2011/9/15 13:27:00 [只看该作者]

谢谢。

 

我们会试试。

 

不过,似乎还是很复杂的。真的需要这么复杂才能做到吗?没有简单一点的办法了吗?


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/9/15 13:35:00 [只看该作者]

暈,這都說複雜了!俺沒更簡單的,您要有,別忘記告訴我.

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


加好友 发短信
等级:婴狐 帖子:51 积分:402 威望:0 精华:0 注册:2011/8/25 10:40:00
  发帖心情 Post By:2011/9/15 13:56:00 [只看该作者]

不好意思,对于程序员来说,也许这不算复杂的,但对于非程序员的一般用户来说,也许这是过于复杂了。

 

我们是希望非程序员的一般用户都能掌握狐表的。

 

我们以前使用的一些工具,在做类似这样的事情上,确实要简单得多了----我们希望狐表要更简单。

 


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


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/9/15 14:01:00 [只看该作者]

这段代码放在表的DataColChanged事件中就可以了,又不要你每年都操作,一次性放入就可以的,呵

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/9/15 14:03:00 [只看该作者]

錯!狐表對有心學且肯花一定的時間,一般的編程並不難,但對那些只求代碼,不求方法的,並不適用

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


加好友 发短信
等级:婴狐 帖子:51 积分:402 威望:0 精华:0 注册:2011/8/25 10:40:00
  发帖心情 Post By:2011/9/15 15:39:00 [只看该作者]

请教一下朋友DON,这个“年龄”列是数据列呢?还是表达式列?

 

1)如果是数据列,对于我来说有点不现实,因为我的表是外部表,那里本来就没有“工龄”这个字段;

 

2)如果是表达式列,我试了一下,好象表达式列是只读的,不能修改,是不是还要通过代码,重新定义表达式列呢?

 

总之,如果是这样的话,我觉得真的是太复杂了,我们能找到更简单的方法吗?

 

谢谢先!


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


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/9/15 15:43:00 [只看该作者]

“年龄”列是数据列,如果你的外部表没有工龄列也没关系,你可以加载到内部表后,再增加一个工龄列,并通过代码一并计算出各员工的工龄来,只要按一次就可以,并不麻烦,如果你自己搞不定,就上传相关文件
[此贴子已经被作者于2011-9-15 15:43:35编辑过]

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


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

这样的代码,对于开发来说,真的不算复杂了。

可能楼主还没有看开发部分,等你真正进入了,才知道什么叫做效率和轻松。

 

轻松和效率不是在这种简单问题上的,建议下载这个作品,里头有个58岁的老先生写的foxtable使用感想,可以看一下:

 

http://www.datasoft.com.cn/dispbbs.asp?boardid=2&Id=12735

 

 

[此贴子已经被作者于2011-9-15 15:52:46编辑过]

 回到顶部
总数 13 1 2 下一页