Foxtable(狐表)用户栏目专家坐堂 → 询问“年龄”表达式命令是什么?


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

主题:询问“年龄”表达式命令是什么?

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


加好友 发短信
等级:婴狐 帖子:65 积分:908 威望:0 精华:0 注册:2008/9/1 14:50:00
询问“年龄”表达式命令是什么?  发帖心情 Post By:2008/11/27 16:10:00 [只看该作者]

易表中求年龄或工龄的命令在狐表中不能用,请问狐表中年龄的表达式如何作?查询了狐表帮助文件没找到答案,请指教!谢谢!

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


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2008/11/27 16:17:00 [只看该作者]

Dim d1 as Date = 出生日期
Dim d2 as Date = Date.Today

Output.Show(d2.Year - d1.Year+1  & "岁")


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/11/27 16:20: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,表示仅仅重算出生日期发生变化的这一行,如果省略这个参数,将重算整个年龄列,大大增加系统的负荷。

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


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


加好友 发短信
等级:婴狐 帖子:65 积分:908 威望:0 精华:0 注册:2008/9/1 14:50:00
  发帖心情 Post By:2008/11/27 16:47:00 [只看该作者]

请问,年龄列设成“数据列”还是“表达式列”?,我把公式复制粘贴到年龄列的计算代码窗口,年龄列并没有什么变化!

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


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2008/11/27 16:55:00 [只看该作者]

以下是引用狐狸爸爸在2008-11-27 16:20:00的发言:


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

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

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

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

End If

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

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

还需在数据表→表属性→事件→DataColChanged→设置如上的重算代码


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


加好友 发短信
等级:婴狐 帖子:65 积分:908 威望:0 精华:0 注册:2008/9/1 14:50:00
  发帖心情 Post By:2008/11/27 17:25:00 [只看该作者]

谢谢,成功啦!

 回到顶部