以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  日期列中的空日期到底是什麼?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=51048)

--  作者:jaegea
--  发布时间:2014/5/18 17:43:00
--  日期列中的空日期到底是什麼?

0001-01-02 15:00:00
1900-01-01 22:00:00

 

輸入的時候只輸入時間時,默認的日期是1900-01-01,但進行日期計算時卻有時是1900-01-01,有時又是以0001-01-01進行計算,這是怎麼回事?


--  作者:有点甜
--  发布时间:2014/5/18 17:47:00
--  

等价的,日期是从1900开始计算的。

 

你要根据情况变通处理。


--  作者:jaegea
--  发布时间:2014/5/18 17:48:00
--  

分別有兩組時間為時間A1,時間A2,時間B1,時間B2

DataColChanged設置以下代碼,得到的時間都不對

Select Case e.DataCol.Name
    Case "時間A1","時間A2"

        SystemReady = False
        If e.DataRow(e.DataCol.Name) < e.DataRow("時間B" & e.DataCol.Name.SubString(e.DataCol.Name.Length-1)) Then
            e.DataRow(e.DataCol.Name) = e.DataRow(e.DataCol.Name).AddDays(1)
        Else
            If e.DataRow(e.DataCol.Name).Day > 1 Then
                e.DataRow(e.DataCol.Name) = e.DataRow(e.DataCol.Name).AddDays(1-e.DataRow(e.DataCol.Name).Day)
            End If
        End If
        SystemReady = True
End Select


--  作者:有点甜
--  发布时间:2014/5/18 17:51:00
--  
把项目发上来,你列设置有错,或者数据有错。
--  作者:jaegea
--  发布时间:2014/5/18 17:59:00
--  

我需要得到的結果是根據兩個時間組的時間變動進行時間差的計算結果,另外就是不需要日期顯示的

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

[此贴子已经被作者于2014-5-18 18:01:03编辑过]

--  作者:有点甜
--  发布时间:2014/5/18 18:19:00
--  

 看不懂你的代码,是不是这个意思?

 

Select Case e.DataCol.Name
    Case "時間A1","時間A2"
        SystemReady = False
        Dim sp As TimeSpan
        If e.DataRow("時間A1") > e.DataRow("時間A2") Then
            sp = e.DataRow("時間A1") - e.DataRow("時間A2")
        Else
            sp = e.DataRow("時間A2") - e.DataRow("時間A1")
        End If
        e.DataRow("時間A時間差") = sp.TotalMinutes
        SystemReady = True
End Select


--  作者:jaegea
--  发布时间:2014/5/19 8:20:00
--  

不對,是要判斷兩個時間,如果時間2大於時間1,則為當天時間,如果時間2小於時間1,則為第二天時間,所以時間二的日期要加1天,然後計算兩個時間的時間差,時間2永遠都是大於時間1的

 

Select Case e.DataCol.Name
    Case "時間A1","時間A2"
        SystemReady = False
        Dim sp As TimeSpan
        If e.DataRow("時間A2") >= e.DataRow("時間A1") Then
            sp = e.DataRow("時間A2") - e.DataRow("時間A1") 
        Else
            sp = e.DataRow("時間A2").AddDays(1)  - e.DataRow("時間A1")
        End If
        e.DataRow("時間A時間差") = sp.TotalMinutes
        SystemReady = True
End Select

 

要的是這樣的效果,但是計算出來的結果就是不對

[此贴子已经被作者于2014-5-19 8:24:38编辑过]

--  作者:Bin
--  发布时间:2014/5/19 8:36:00
--  
7楼代码有什么问题?测试没问题啊.180分钟不是正确的结果吗?
--  作者:jaegea
--  发布时间:2014/5/19 8:39:00
--  
如果列按日期時間格式去計算就沒錯,但是將列設置成時間空日期的,然後再去計算就會出現

0001-01-02 15:00:00
1900-01-01 22:00:00

 

這兩種情況參與計算,結果就錯了


--  作者:Bin
--  发布时间:2014/5/19 8:42:00
--  
不要这样做不就好了.