以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]求好心的大哥大姐为小弟我指点迷津  (http://foxtable.net/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

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140426020150.jpg
图片点击可在新窗口打开查看


如图,我想根据第一个日期的读数时间和第二日期的读数时间求读数间隔小时  我上面代码是直接用上一行读数时间减去下一行读数时间。但可悲的是,代码调用错误,我想知道错在哪里了?还有就是该怎么改正过来,并且我还想知道怎么用 第一个日期的读数时间和第二日期的读数时间求读数间隔小时 ? 求好心人指点我需要设置上面类型的列属性。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代码才能实现我想要的这个功能。
         
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


[此贴子已经被作者于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
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:时间间隔计算.table


--  作者:lsy
--  发布时间:2014/4/27 11:31:00
--  

有点小错,改正:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:时间间隔计算.table

[此贴子已经被作者于2014-4-27 11:31:44编辑过]