Foxtable(狐表)用户栏目专家坐堂 → 日期的计算


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

主题:日期的计算

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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
日期的计算  发帖心情 Post By:2014/8/28 23:08:00 [只看该作者]

有一个表,现要计算上下行之间的日期的间隔”天数“,及最后一次日期与今天的“距今天数”,示例是
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:笔筒该.zip


代码如下:
Select Case e.DataCol.Name
    Case  "分类", "处置日期"
        If e.DataCol.Name = "处置日期" AndAlso e.DataRow.IsNull(e.DataCol) = False Then
            Dim dr As DataRow = e.DataTable.Find("分类 = '" & e.DataRow("分类") & "' and 处置日期 <= #" & e.DataRow("处置日期") & "#","处置日期 Desc")
            If dr IsNot Nothing Then
                Dim tp As TimeSpan = e.DataRow("处置日期") - dr("处置日期")
                e.DataRow("天数") = tp.TotalDays
                dr =e.DataTable.Find("分类 = '" & e.DataRow("分类")  & "' and 处置日期 <= #" & e.DataRow("处置日期") & "#","处置日期 Desc")
                If dr IsNot Nothing Then                    
                        tp = Date.Today - cdate(dr("处置日期"))  
                        e.DataRow("距今天数") = tp.TotalDays
                    
                End If
           End If
        End If
End Select

示例中的表是“医疗废物处置”,现在问题是:要达到“计算上下行之间的各分类的处置日期的间隔”天数“,及最后一次“处置日期”与今天的“距今天数”这个目标,上述代码请改下。这组代码产生效果是:每个处置日期”都产生一个“距今天数”,而不是最近一个处置日期”产生一个“距今天数”;另一问题是,”天数“一直是“0”,
[此贴子已经被作者于2014-8-29 7:33:04编辑过]

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


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

无数据源打不开. 上个内部数据源的例子吧

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/29 9:08:00 [只看该作者]

 没有数据库,没有表格

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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/8/29 9:22:00 [只看该作者]

示例
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:鲨娑.zip


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/29 9:28:00 [只看该作者]

Select Case e.DataCol.Name
    Case  "分类", "处置日期"
        If e.DataRow.IsNull("处置日期") = False Then
            Dim dr As DataRow = e.DataTable.Find("分类 = '" & e.DataRow("分类") & "' and 处置日期 <= #" & e.DataRow("处置日期") & "# and _Identify <> " & e.DataRow("_Identify"),"处置日期 Desc")
            If dr IsNot Nothing Then
                Dim tp As TimeSpan = e.DataRow("处置日期") - dr("处置日期")
                e.DataRow("天数") = tp.TotalDays
                dr =e.DataTable.Find("分类 = '" & e.DataRow("分类")  & "' and 处置日期 <= #" & e.DataRow("处置日期") & "#","处置日期 Desc")
                If dr IsNot Nothing Then
                    tp = Date.Today - cdate(dr("处置日期"))
                    e.DataRow("距今天数") = tp.TotalDays                  
                End If
            End If
        End If
End Select

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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/8/29 9:57:00 [只看该作者]

回5楼,每个"处置日期"都有一个"距今天数",能不能这样,下一行"距今天数"产生以后,上一行的"距今天数"变为“0”,这样代码如何写?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/29 10:02:00 [只看该作者]

 Select Case e.DataCol.Name
    Case  "分类", "处置日期"
        If e.DataRow.IsNull("处置日期") = False Then
            Dim dr As DataRow = e.DataTable.Find("分类 = '" & e.DataRow("分类") & "' and 处置日期 <= #" & e.DataRow("处置日期") & "# and _Identify <> " & e.DataRow("_Identify"),"处置日期 Desc")
            If dr IsNot Nothing Then
                Dim tp As TimeSpan = e.DataRow("处置日期") - dr("处置日期")
                e.DataRow("天数") = tp.TotalDays
               
                tp = Date.Today - cdate(e.DataRow("处置日期"))
                e.DataRow("距今天数") = tp.TotalDays
                e.DataTable.ReplaceFor("距今天数", Nothing, "分类 = '" & e.DataRow("分类") & "' and 处置日期 <= #" & e.DataRow("处置日期") & "# and _Identify <> " & e.DataRow("_Identify"))
            End If
        End If
End Select

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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/8/29 10:12:00 [只看该作者]

Select Case e.DataCol.Name
    Case  "身份证号", "报销起日", "记录时间", "报销止日"
        If e.DataCol.Name = "记录时间" AndAlso e.DataRow.IsNull(e.DataCol) = False Then
            Dim dr As DataRow = e.DataTable.Find("身份证号 = '" & e.DataRow("身份证号") & "' and 报销起日 = #" & e.DataRow("报销起日") & "# and _Identify <> '" & e.DataRow("_Identify") & "' and 记录时间 <= #" & e.DataRow("记录时间") & "#","记录时间 Desc")
            If dr IsNot Nothing Then
                Dim tp As TimeSpan = e.DataRow("记录时间") - dr("记录时间")
                e.DataRow("天数") = tp.TotalDays
                dr = e.DataTable.Find("身份证号 = '" & e.DataRow("身份证号") & "' and 报销起日 = #" & e.DataRow("报销起日") & "# And 记录时间 <= #" & e.DataRow("记录时间") & "#","记录时间 Desc")
                If dr IsNot Nothing Then
                    If dr.IsNull("报销止日") Then
                        tp = cdate(dr("记录时间")) - Date.Today
                        e.DataRow("距今天数") = tp.TotalDays
                    Else
                        tp = cdate(dr("记录时间")) - cdate(dr("报销止日"))
                        e.DataRow("距今天数") = tp.TotalDays
                        e.DataTable.ReplaceFor("距今天数", Nothing, "身份证号 = '" & e.DataRow("身份证号") & "' and 报销起日 = #" & e.DataRow("报销起日") & "# and _Identify <> '" & e.DataRow("_Identify") & "' and 记录时间 <= #" & e.DataRow("记录时间") & "#","记录时间 Desc")
                    End If
                End If
            Else
                e.DataRow("天数") = 0
            End If
        End If
End Select

那这个代码这样写吗?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/29 10:35:00 [只看该作者]

 是


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/29 10:40:00 [只看该作者]

 请参照这一段改

 

Select Case e.DataCol.Name
    Case  "分类", "处置日期"
        If e.DataRow.IsNull("处置日期") = False Then
            Dim dr As DataRow = e.DataTable.Find("分类 = '" & e.DataRow("分类") & "' and 处置日期 <= #" & e.DataRow("处置日期") & "# and _Identify <> " & e.DataRow("_Identify"),"处置日期 Desc")
            If dr IsNot Nothing Then
                Dim tp As TimeSpan = e.DataRow("处置日期") - dr("处置日期")
                e.DataRow("天数") = tp.TotalDays
               
                tp = Date.Today - cdate(e.DataRow("处置日期"))
                e.DataRow("距今天数") = tp.TotalDays
                e.DataTable.ReplaceFor("距今天数", Nothing, "分类 = '" & e.DataRow("分类") & "' and 处置日期 <= #" & e.DataRow("处置日期") & "# and _Identify <> " & e.DataRow("_Identify"))
            End If
        End If
End Select


 回到顶部