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


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

主题:日期的计算

帅哥哟,离线,有人找我吗?
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编辑过]

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


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

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


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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
jk362223
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

那这个代码这样写吗?

 回到顶部