Foxtable(狐表)用户栏目专家坐堂 → [求助]如何用日期函数判断后取值


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

主题:[求助]如何用日期函数判断后取值

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


加好友 发短信
等级:婴狐 帖子:7 积分:129 威望:0 精华:0 注册:2012/7/18 9:39:00
[求助]如何用日期函数判断后取值  发帖心情 Post By:2016/2/5 15:49:00 [只看该作者]

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


如何才能实现这样的功能:

比如今天是2016年02月05日

1、
当“驾证有效期限”大于(today日期+30天)以上时,“驾证状态”栏自动生成“正常”;
当“驾证有效期限”等于(today日期+30天)时,“驾证状态”栏自动生成“即将到期请换证”;
当“驾证有效期限”小于(today日期)时,“驾证状态”栏自动生成“已过期请换证”;

2、
当“从业证有效期限”和“继续教育记录”均大于(today日期+30天)以上时,“从业证状态”栏自动生成“正常”;
当“从业证有效期限”等于(today日期+30天)时,“从业证状态”栏生成“即将到期请换证”;
当“继续教育记录”等于(today日期+30天)时,“从业证状态”栏生成“请参加继续教育”;
当“从业证有效期限”小于(today日期)时,“从业证状态”栏生成“已过期请换证”

3、
如何简化以下句子:
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

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

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/5 16:10:00 [只看该作者]

1、2,参考

 

If e.DataCol.name = "驾证有效期限" Then
    If e.NewValue = Nothing Then
        e.DataRow("驾证状态") = Nothing
    Else
        Dim sp As TimeSpan = cdate(e.NewValue) - Date.Today
        If sp.TotalDays > 30 Then
            e.DataRow("驾证状态") = "正常"
        Else If sp.TotalDays >= 0 Then
            e.DataRow("驾证状态") = "即将到期请换证"
        Else
            e.DataRow("驾证状态") = "已过期请换证"
        End If
    End If
End If

If e.DataCol.name = "从业证有效期限" Then
    If e.NewValue = Nothing Then
        e.DataRow("从业证状态") = Nothing
    Else
        Dim sp As TimeSpan = cdate(e.NewValue) - Date.Today
        If sp.TotalDays > 30 Then
            e.DataRow("从业证状态") = "正常"
        Else If sp.TotalDays >= 0 Then
            e.DataRow("从业证状态") = "即将到期请换证"
        Else
            e.DataRow("从业证状态") = "已过期请换证"
        End If
    End If
End If

If e.DataCol.name = "继续教育记录" Then
    Dim sp As TimeSpan = cdate(e.NewValue) - Date.Today
    If sp.TotalDays >= 0 AndAlso sp.TotalDays <= 30 Then
        e.DataRow("从业证状态") = "请参加继续教育"
    End If
End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/5 16:14:00 [只看该作者]

3、

 


Dim ary1() As String = {"初次领证日期", "领取大客日期"}
Dim ary2() As String = {"驾龄", "大客年限"}

Dim idx As Integer = array.Indexof(ary1, e.DataCol.name)
If idx >= 0 Then
    If e.DataRow.IsNull(ary1(idx)) Then
        e.DataRow(ary2(idx)) = Nothing
    Else
        e.DataRow(ary2(idx)) = Date.Today.Year - e.DataRow(ary1(idx)).Year
    End If
End If


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


加好友 发短信
等级:婴狐 帖子:7 积分:129 威望:0 精华:0 注册:2012/7/18 9:39:00
  发帖心情 Post By:2016/2/5 16:23:00 [只看该作者]

太感谢了!

 回到顶部