以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于天数自动更新的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38764)

--  作者:aygp
--  发布时间: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
--  发布时间:2013/8/6 15:10:00
--  
如果天数自动更新有困难,手动一键更新也行,需要使用入职天数的数据时按下“该更新键”即可。请问一键更新的代码如何写?先谢了!
--  作者:Bin
--  发布时间:2013/8/6 15:11:00
--  
DataTables("表A").DataCols("第二列").RaiseDataColChanged   每次打开项目使用代码触发一下Datacolchanged事件即可. 也可以整个按钮再需要时触发.
--  作者:foxor
--  发布时间: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
--  发布时间: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
--  发布时间:2013/8/6 20:09:00
--  
谢谢各位了!我试一试,如果有不清楚时再请教。
--  作者:aygp
--  发布时间: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
--  发布时间: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
--  发布时间:2013/8/7 8:50:00
--  

你把第一句改一下试试

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


--  作者:aygp
--  发布时间: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(天),如何修改以上代码,在"入职时间"列为空时,则在"入职天数"列中什么都不显示。