Foxtable(狐表)用户栏目专家坐堂 → 关于天数自动更新的问题


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

主题:关于天数自动更新的问题

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


加好友 发短信
等级:三尾狐 帖子:693 积分:5206 威望:0 精华:0 注册:2011/3/15 12:34:00
关于天数自动更新的问题  发帖心情 Post By:2013/8/6 14:53:00 [只看该作者]

关于天数自动更新的问题

 

 

      有一数据表,其中有“入职时间”列和“入职天数”列。以下代码可以做到输入入职时间并确认后,可当时显示入职天数。但随着时间的变化,入职天数却不发生相应的变化。以下代码应该如何修改,才能让入职天数每天都能自动更新呢(因为入职天数每天都在增加)?

 

 

 

Select Case e.DataCol.name
Case "入职时间"
If e.DataRow.IsNull("入职时间") Then
e.DataRow("入职天数") = Nothing
Else
Dim tp As TimeSpan = Date.today - CDate(e.DataRow("入职时间"))
e.DataRow("入职天数") = Math.Round(tp.TotalDays )
End If


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


加好友 发短信
等级:三尾狐 帖子:693 积分:5206 威望:0 精华:0 注册:2011/3/15 12:34:00
  发帖心情 Post By:2013/8/6 15:10:00 [只看该作者]

如果天数自动更新有困难,手动一键更新也行,需要使用入职天数的数据时按下“该更新键”即可。请问一键更新的代码如何写?先谢了!

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/8/6 15:11:00 [只看该作者]

DataTables("表A").DataCols("第二列").RaiseDataColChanged   每次打开项目使用代码触发一下Datacolchanged事件即可. 也可以整个按钮再需要时触发.

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


加好友 发短信
等级:二尾狐 帖子:517 积分:4199 威望:0 精华:0 注册:2009/10/8 16:43:00
  发帖心情 Post By:2013/8/6 15:14:00 [只看该作者]

可以在 afteropenproject事件中加入类似代码:
for each dr as datarow in datatables("入值表“)
  Dim tp As TimeSpan = Date.today - CDate(dr("入职时间"))
  dr("入职天数") = Math.Round(tp.TotalDays )
next
这样每天打开项目的时候,入职天数就自动更新了

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/8/6 15:21:00 [只看该作者]

这要看你对入职天数调用方式。

 

只是在查看数据表时想看到最新天数:

1、打开数据表,选中入职时间列,点击重置列菜单按钮;

2、在MainTableChanged事件中:

If MainTable.Name = "XX数据表" Then
    Tables("XX数据表").Cols("入职时间").DataCol.RaiseDataColChanged()
End If

 

有其他代码经常调用这个入职天数:

AfterOpenProject事件中:

DataTables("XX数据表").DataCols("入职时间").RaiseDataColChanged()

[此贴子已经被作者于2013-8-6 15:22:36编辑过]

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


加好友 发短信
等级:三尾狐 帖子:693 积分:5206 威望:0 精华:0 注册:2011/3/15 12:34:00
  发帖心情 Post By:2013/8/6 20:09:00 [只看该作者]

谢谢各位了!我试一试,如果有不清楚时再请教。

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


加好友 发短信
等级:三尾狐 帖子:693 积分:5206 威望:0 精华:0 注册:2011/3/15 12:34:00
  发帖心情 Post By:2013/8/7 0:44:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:截图.jpg
图片点击可在新窗口打开查看
For Each dr As DataRow In DataTables("职工基本信息")
  Dim tp As TimeSpan = Date.today - CDate(dr("入职时间"))
  dr("入职天数") = Math.Round(tp.TotalDays )
Next

 

 

以上代码可能要修改,没有通过。

 


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/8/7 7:28:00 [只看该作者]

For Each dr As DataRow In DataTables("职工基本信息")
  Dim tp As TimeSpan = Date.today - CDate(dr("入职时间"))
  dr("入职天数") = Math.Round(tp.TotalDays )
Next

 

上面的代码,你原来是放在DataColChanged事件中,怎么挪个地方了?

有了这段代码,下面的代码才有作用:

只是在查看数据表时想看到最新天数:

1、打开数据表,选中入职时间列,点击重置列菜单按钮;

2、在MainTableChanged事件中:

If MainTable.Name = "XX数据表" Then
    Tables("XX数据表").Cols("入职时间").DataCol.RaiseDataColChanged()
End If

 

有其他代码经常调用这个入职天数:

AfterOpenProject事件中:

DataTables("XX数据表").DataCols("入职时间").RaiseDataColChanged()


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


加好友 发短信
等级:幼狐 帖子:181 积分:1620 威望:0 精华:0 注册:2013/4/25 14:05:00
  发帖心情 Post By:2013/8/7 8:50:00 [只看该作者]

你把第一句改一下试试

For Each dr As DataRow In DataTables("职工基本信息").datarows


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


加好友 发短信
等级:三尾狐 帖子:693 积分:5206 威望:0 精华:0 注册:2011/3/15 12:34:00
  发帖心情 Post By:2013/8/7 14:44:00 [只看该作者]

 

For Each dr As DataRow In DataTables("职工基本信息").datarows

  Dim tp As TimeSpan = Date.today - CDate(dr("入职时间"))
  dr("入职天数") = Math.Round(tp.TotalDays )
Next

 

 

以上代码可以正确生成入职天数,但是"入职时间"列为空时,则在"入职天数"列显示735086(天),如何修改以上代码,在"入职时间"列为空时,则在"入职天数"列中什么都不显示。


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