Foxtable(狐表)用户栏目专家坐堂 → [求助]有关员工_退休提醒的刷新问题


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

主题:[求助]有关员工_退休提醒的刷新问题

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


加好友 发短信
等级:幼狐 帖子:88 积分:1036 威望:0 精华:0 注册:2013/9/2 18:25:00
[求助]有关员工_退休提醒的刷新问题  发帖心情 Post By:2015/6/23 14:08:00 [只看该作者]

人事信息表中有两列:"员工_证件号码"、"员工_退休提醒"
我在人事信息表的DataColChanged中代码如下:
If e.DataCol.Name = "员工_证件号码" Then
    Dim txrq As Date                        '退休日期
    Dim txts As Byte = 61                   '提醒天数
    If e.DataRow.IsNull("员工_证件号码") Then
        e.DataRow("员工_退休提醒") = Nothing
    Else
        If Len(e.DataRow("员工_证件号码")) <> 18 AndAlso Len(e.DataRow("员工_证件号码")) <> 15 Then
            e.DataRow("员工_退休提醒") = "格式不符"
        Else
            If ReadSex(e.DataRow("员工_证件号码")) = "男" Then
                txrq = Readbirthday(e.DataRow("员工_证件号码")).AddYears(60)
            ElseIf ReadSex(e.DataRow("员工_证件号码")) = "女" Then
                txrq = Readbirthday(e.DataRow("员工_证件号码")).AddYears(50)
            End If
            
            Dim dd As TimeSpan = txrq - Date.Today()
            If dd.TotalDays < 0 Then
                e.DataRow("员工_退休提醒") = "已过退休!"
            ElseIf dd.TotalDays >= 0 AndAlso dd.TotalDays <= txts Then
                e.DataRow("员工_退休提醒") = "!即将退休"
            Else
                e.DataRow("员工_退休提醒") = Nothing
            End If
        End If
    End If
End If
此代码在输入"员工_证件号码"列后刷新"员工_退休提醒"列。

考虑到输入以后每天的刷新问题,我先是在人事信息表的AfterLoad中编写代码如下:
For Each dr As DataRow In e.DataTable.DataRows
    Dim txrq As Date                        '退休日期
    Dim txts As Byte = 61                   '提醒天数
    If dr.IsNull("员工_证件号码") Then
        dr("员工_退休提醒") = Nothing
    Else
        If Len(dr("员工_证件号码")) <> 18 AndAlso Len(dr("员工_证件号码")) <> 15 Then
            dr("员工_退休提醒") = "格式不符"
        Else
            If ReadSex(dr("员工_证件号码")) = "男" Then
                txrq = Readbirthday(dr("员工_证件号码")).AddYears(60)
            ElseIf ReadSex(dr("员工_证件号码")) = "女" Then
                txrq = Readbirthday(dr("员工_证件号码")).AddYears(50)
            End If
            
            Dim dd As TimeSpan = txrq - Date.Today()
            If dd.TotalDays < 0 Then
                dr("员工_退休提醒") = "已过退休!"
            ElseIf dd.TotalDays >= 0 AndAlso dd.TotalDays <= txts Then
                dr("员工_退休提醒") = "!即将退休"
            Else
                dr("员工_退休提醒") = Nothing
            End If
        End If
    End If
Next
但是重新打开之后没反应。不知道为什么?大概是我还是内部数据源的原因吧?

于是'停掉AfterLoad代码,改为在项目属性的AfterOpenProject中加代码如下:
For Each dr As DataRow In DataTables("人事信息").DataRows
    Dim txrq As Date                        '退休日期
    Dim txts As Byte = 61                   '提醒天数
    If dr.IsNull("员工_证件号码") Then
        dr("员工_退休提醒") = Nothing
    Else
        If Len(dr("员工_证件号码")) <> 18 AndAlso Len(dr("员工_证件号码")) <> 15 Then
            dr("员工_退休提醒") = "格式不符"
        Else
            If ReadSex(dr("员工_证件号码")) = "男" Then
                txrq = Readbirthday(dr("员工_证件号码")).AddYears(60)
            ElseIf ReadSex(dr("员工_证件号码")) = "女" Then
                txrq = Readbirthday(dr("员工_证件号码")).AddYears(50)
            End If
            
            Dim dd As TimeSpan = txrq - Date.Today()
            If dd.TotalDays < 0 Then
                dr("员工_退休提醒") = "已过退休!"
            ElseIf dd.TotalDays >= 0 AndAlso dd.TotalDays <= txts Then
                dr("员工_退休提醒") = "!即将退休"
            Else
                dr("员工_退休提醒") = Nothing
            End If
        End If
    End If
Next
重新打开后即可刷新。(就量刚加好后就有刷新。)

我这个思路对吗?是不是确实不能用AfterLoad而应该用AfterOpenProject





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


加好友 发短信
等级:幼狐 帖子:88 积分:1036 威望:0 精华:0 注册:2013/9/2 18:25:00
  发帖心情 Post By:2015/6/23 14:10:00 [只看该作者]

(就是刚加好后就有刷新。)

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


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

AfterOpenProject 才对

 回到顶部