Foxtable(狐表)用户栏目专家坐堂 → [求助]请问如何让[年龄]列根据[出生日期]列与系统时间自动计算出年龄?


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

主题:[求助]请问如何让[年龄]列根据[出生日期]列与系统时间自动计算出年龄?

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


加好友 发短信
等级:婴狐 帖子:48 积分:369 威望:0 精华:0 注册:2011/12/24 23:53:00
[求助]请问如何让[年龄]列根据[出生日期]列与系统时间自动计算出年龄?  发帖心情 Post By:2011/12/28 15:52:00 [只看该作者]

如题,在论坛里和百度都找了不少,不过按着做都无效,请高手解答,万分感激。

 

--------------------------------

 

将年龄列的计算代码设为:

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

End If

 


设置计算代码之后,我们随时可以通过菜单按钮来重算年龄列,得到最新的年龄数据:

现在重算的问题解决了,但是却有新的问题,输入或修改出生日期,年龄列的数据不会自动刷新,除非你重算年龄列。

我们需要在DataColChanged事件中加入代码,使得出生日期发生变化后,能够自动重算该行的年龄列:

If e.DataCol.Name = "出生日期" Then
    e.
DataTable.DataCols("年龄").Recalc(e.DataRow)

End If

 

Recalc是DataCol类型的一个方法,用于重算列(也就是重新运行该列的计算代码)。
给Recalc加上参数e.DataRow,表示仅仅重算出生日期发生变化的这一行,如果省略这个参数,将重算整个年龄列,大大增加系统的负荷。

经过上述设置,输入出生日期,年龄可以自动计算,如果年龄的计算规则有变,修改了年龄列的计算代码,我们只需重算年龄列,即可得到按新规则计算得出的年龄。
如果到了明年,也只需重算年龄列即可得到最新的年龄。

 

-----------------------------------------------

 

这是狐狸爸爸于2008年发的回帖,我找上述方式将年龄计算的代码写入年龄列的表达式,提示'e'运算符后缺少操作数,输入至表事件DataColChanged中无任何效果。

 

真心求教。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/28 16:05:00 [只看该作者]

呵呵,这是代码,不是表达式来的。

要设置在DataColChanged事件中:

http://www.foxtable.com/help/topics/1587.htm

 

 

最好先系统看一下帮助那文件,掌握一下基本的概念和方法:

图片点击可在新窗口打开查看

 

 


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


加好友 发短信
等级:婴狐 帖子:48 积分:369 威望:0 精华:0 注册:2011/12/24 23:53:00
  发帖心情 Post By:2011/12/28 16:07:00 [只看该作者]

多谢楼上,可是我将其复制如表属性中的DataColChanged事件内,依旧没有任何效果

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


加好友 发短信
等级:婴狐 帖子:48 积分:369 威望:0 精华:0 注册:2011/12/24 23:53:00
  发帖心情 Post By:2011/12/28 16:11:00 [只看该作者]

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=192

 

我在上面的帖子里下载了附件,按照相同的方式把DataColChanged里的代码改了,可惜还是没任何效果

 

也按照上述附件中把[年龄]列设置为数据列-整数了。


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


加好友 发短信
等级:婴狐 帖子:48 积分:369 威望:0 精华:0 注册:2011/12/24 23:53:00
  发帖心情 Post By:2011/12/28 16:15:00 [只看该作者]

还想再追加一个问题

 

我希望可以不输入“出生日期”这一行,直接通过系统日期与身份证号码中相应数值进行运算,得出年龄,不知是否可行?


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/28 16:19:00 [只看该作者]

呵呵,怎么会没有效果呢:

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目247.table


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


加好友 发短信
等级:婴狐 帖子:48 积分:369 威望:0 精华:0 注册:2011/12/24 23:53:00
  发帖心情 Post By:2011/12/28 16:19:00 [只看该作者]

多谢狐狸爸爸,通过查询你发的链接里的帮助,第一个问题已经解决了,点了一下“重置列”刷新出生日期即可解决。。。

 

不知追加的第二个问题是否可行?


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/28 16:22:00 [只看该作者]

第二个问题已经过期,recalc这个方法新版本已经没有了


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


加好友 发短信
等级:婴狐 帖子:48 积分:369 威望:0 精华:0 注册:2011/12/24 23:53:00
  发帖心情 Post By:2011/12/28 16:32:00 [只看该作者]

多谢解答,我正尝试将公司的办公系统及成本测算等所有内容用FOXTABLE来做

 

如可行将长期合作

 

FOXTABLE这东西还挺好玩的,对于有计算机操作基础但并无编程基础的人相当实用


 回到顶部