以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]表达式的重置? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=53620) |
||||
-- 作者:jk362223 -- 发布时间:2014/7/11 19:43:00 -- [求助]表达式的重置? 有表A,DataColChanged设置: If e.DataCol.Name = "入院时间" Then e.DataRow("天数") = (Date.Today - CDate(e.DataRow("入院时间"))).TotalDays End If If e.DataCol.Name = "入院时间" OrElse e.DataCol.Name = "天数" Then If e.DataRow.IsNull("入院时间") OrElse e.DataRow.IsNull("天数") Then e.DataRow("今日时间") = Nothing Else e.DataRow("今日时间") = e.DataRow("入院时间").AddDays(e.DataRow("天数")) End If End If Select Case e.DataCol.Name Case "入院时间","至今出院时间" Dim dr As DataRow = e.DataRow If dr.IsNull("入院时间") OrElse dr.IsNull("至今出院时间") Then dr("至今住院天数") = Nothing Else Dim tp As TimeSpan = dr("至今出院时间") - dr("入院时间") dr("至今住院天数") = tp.TotalDays+1 End If End Select [
至今出院时间]是表达式列,I表达式是:sNull([出院时间],[今日时间]) 现在问题是,当输入[出院时间]值时,"至今住院天数"列不能变更,需重置[ 至今出院时间]才可,在帮助中参考“表达式列的特殊性”,对本例的代码还是不知如何写, 请帮我
|
||||
-- 作者:zyqzyy -- 发布时间:2014/7/11 20:05:00 -- Select Case e.DataCol.Name
Case "入院时间" , "出院时间"
e.DataRow("天数") = (Date.Today - CDate(e.DataRow("入院时间"))).TotalDays
End If
If e.DataCol.Name = "入院时间" OrElse e.DataCol.Name = "天数" Then
If e.DataRow.IsNull("入院时间") OrElse e.DataRow.IsNull("天数") Then
e.DataRow("今日时间") = Nothing
Else
e.DataRow("今日时间") = e.DataRow("入院时间").AddDays(e.DataRow("天数"))
End If
End If
Dim dr As DataRow = e.DataRow
If dr.IsNull("入院时间") OrElse dr.IsNull("至今出院时间") Then
dr("至今住院天数") = Nothing
Else
Dim tp As TimeSpan = dr("至今出院时间") - dr("入院时间")
dr("至今住院天数") = tp.TotalDays+1
End If
End Select
|
||||
-- 作者:zyqzyy -- 发布时间:2014/7/11 20:11:00 -- 还是给你上个例子,我在中医院工作,多联系!
|
||||
-- 作者:zyqzyy -- 发布时间:2014/7/11 20:16:00 -- 还有是 今日时间 没必要在数据表中单独增加一列,直接用date.today来取值! 你的代码 还可以优化一下的。 [此贴子已经被作者于2014-7-11 20:16:52编辑过]
|
||||
-- 作者:jk362223 -- 发布时间:2014/7/11 23:08:00 -- 谢,我们是同行啊,,你是哪的?我是褔建的 |
||||
-- 作者:zyqzyy -- 发布时间:2014/7/11 23:31:00 -- 本人在彩云之南 --- 云南 |
||||
-- 作者:jk362223 -- 发布时间:2014/7/27 8:09:00 -- 示例:If e.Col.name = "数量" Then Dim
pr
As DataRow = e.DataRow.GetParentRow("订单") \'找出对应的父行 "数量"是父表达式重置,若是对表,又自怎样?是不是这样 Dim pr As DataRow = e.DataRow.GetRow() \'找出对应的父行 |
||||
-- 作者:有点酸 -- 发布时间:2014/7/27 8:11:00 -- 什么是对表? 是子表吧?
子表一般不涉及统计,只是引用,更加简单,参考: http://www.foxtable.com/help/topics/1451.htm http://www.foxtable.com/help/topics/1453.htm
|
||||
-- 作者:jk362223 -- 发布时间:2014/7/27 9:57:00 -- 本表,写错了, |
||||
-- 作者:有点甜 -- 发布时间:2014/7/27 10:01:00 -- 以下是引用jk362223在2014-7-27 9:57:00的发言:
本表,写错了,
同样这样写
DataTables("表名").DataCols("入院时间").RaiseDataColChanged() |