以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 日期的计算 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=56083) |
||||
-- 作者:jk362223 -- 发布时间:2014/8/28 23:08: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("处置日期") & "#","处置日期 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 -- 发布时间:2014/8/29 8:42:00 -- 无数据源打不开. 上个内部数据源的例子吧 |
||||
-- 作者:有点甜 -- 发布时间:2014/8/29 9:08:00 -- 没有数据库,没有表格 |
||||
-- 作者:jk362223 -- 发布时间:2014/8/29 9:22:00 -- 示例
|
||||
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2014/8/29 9:57:00 -- 回5楼,每个"处置日期"都有一个"距今天数",能不能这样,下一行"距今天数"产生以后,上一行的"距今天数"变为“0”,这样代码如何写? |
||||
-- 作者:有点甜 -- 发布时间: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 -- 发布时间: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 那这个代码这样写吗?
|
||||
-- 作者:有点甜 -- 发布时间:2014/8/29 10:35:00 -- 是 |
||||
-- 作者:有点甜 -- 发布时间:2014/8/29 10:40:00 -- 请参照这一段改
Select Case e.DataCol.Name |