以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]求好心的大哥大姐为小弟我指点迷津 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=49975) |
||||
-- 作者:minkaia -- 发布时间:2014/4/26 22:00:00 -- [求助]求好心的大哥大姐为小弟我指点迷津 Select Case e.DataCol.Name Case "读数时间","读数间隔时间" Dim dr As DataRow Dim drs As List(of DataRow) Dim tp1 As New TimeSpan(24,00,00) dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") If dr Is Nothing Then e.DataRow("读数间隔时间") = e.DataRow("读数间隔时间") dr = e.DataRow End If drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]") For i As Integer = 1 To drs.Count - 1 drs(i)("读数间隔时间") = drs(i)("读数时间") - drs(i-1)("读数时间") + tp1 Next End Select 如图,我想根据第一个日期的读数时间和第二日期的读数时间求读数间隔小时 我上面代码是直接用上一行读数时间减去下一行读数时间。但可悲的是,代码调用错误,我想知道错在哪里了?还有就是该怎么改正过来,并且我还想知道怎么用
第一个日期的读数时间和第二日期的读数时间求读数间隔小时 ? 求好心人指点我需要设置上面类型的列属性。DataColChanged代码又要怎么写才能达到我要的效果。 不要怪我求知欲太强,哎 他生之时我道未成,我道成之时他已无踪。恨不逢时。 Select Case e.DataCol.Name Case "读数时间","读数间隔时间" Dim dr As DataRow Dim drs As List(of DataRow) Dim tp2 As New TimeSpan dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") If dr Is Nothing Then e.DataRow("读数间隔时间") = e.DataRow("读数间隔时间") dr = e.DataRow End If drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]") For i As Integer = 1 To drs.Count - 1 drs(i)("读数间隔时间") = drs(i)("读数时间") - drs(i-1)("读数时间") tp2 = drs(i)("读数间隔时间") dr("读数间隔时间") = tp2.TotalSeconds() Next End Select 用以上代码加上把读数时间改为双精度小数拓展类型为时段列后,可以得出读数间隔时间,但会弹出调用的目标发生了异常。 求大神解决小小弟的问题啊,到底要什么样的DataColChanged代码才能实现我想要的这个功能。
[此贴子已经被作者于2014-4-26 23:29:12编辑过]
|
||||
-- 作者:minkaia -- 发布时间:2014/4/26 22:10:00 -- 难道我这个请求实在太难? |
||||
-- 作者:rjh4078 -- 发布时间:2014/4/26 22:27:00 -- 上例子 |
||||
-- 作者:程兴刚 -- 发布时间:2014/4/26 22:39:00 -- 这样试试: Select Case e.DataCol.Name Case "读数时间","读数间隔时间"
Dim dr As DataRow
Dim drs As List(of DataRow)
Dim tp1 As New TimeSpan(24,00,00)
dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc")
If dr Isnot Nothing Then
e.DataRow("读数间隔时间") = e.DataRow("读数间隔时间")
dr = e.DataRow
drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
For i As Integer = 1 To drs.Count - 1
drs(i)("读数间隔时间") = drs(i)("读数时间") - drs(i-1)("读数时间") + tp1
Next End If
End Select
|
||||
-- 作者:minkaia -- 发布时间:2014/4/26 23:10:00 -- 不行啊,没有读数时间 |
||||
-- 作者:lsy -- 发布时间:2014/4/27 9:38:00 --
|
||||
-- 作者:lsy -- 发布时间:2014/4/27 11:31:00 -- 有点小错,改正:
[此贴子已经被作者于2014-4-27 11:31:44编辑过]
|