以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于工期时间逻辑计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137795)

--  作者:ideaplayer
--  发布时间:2019/7/16 0:18:00
--  关于工期时间逻辑计算
如附件图片所示, “签约日期”,“工期”,“实际发货日期”这三列手动填写,请问其他几项如何实现自动计算填写。其中发货状态仅有两个状态:已发货和未发货。

代码怎么写?
代码放在哪个位置?

以上谢谢。
图片点击可在新窗口打开查看此主题相关图片如下:1563207318.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2019/7/16 8:47:00
--  
到表格datacolchanged事件处理,参考:


--  作者:ideaplayer
--  发布时间:2019/7/16 17:17:00
--  
还请帮看看有什么问题,前半部分可以执行,后半部分没有执行的效果。什么原因,谢谢。

Dim dc As DataCol = e.DataCol
Dim dr As DataRow = e.DataRow
If dc.Name = "预付款_日期" OrElse dc.Name = "工期" Then
    If dr.IsNull("预付款_日期") OrElse dr.IsNull("工期") Then
        dr("合同发货日期") = Nothing
    Else
        dr("合同发货日期") = dr("预付款_日期").AddDays(dr("工期"))
    End If
End If

Select Case e.DataCol.Name
    Case "预付款_日期","实际发货日期"
        Dim dr2 As DataRow = e.DataRow
        If dr2.IsNull("预付款_日期") OrElse dr2.IsNull("实际发货日期") Then
            dr2("实际交期") = Nothing
        Else
            Dim tp As TimeSpan = dr2("实际发货日期") - dr2("预付款_日期") 
            dr2("实际交期") = tp.TotalDays
        End If
End Select

--  作者:有点蓝
--  发布时间:2019/7/16 17:26:00
--  
看看:http://www.foxtable.com/webhelp/topics/1517.htm

Dim tp As TimeSpan = cdate(dr2("实际发货日期") )- cdate(dr2("预付款_日期") )

--  作者:ideaplayer
--  发布时间:2019/7/16 17:33:00
--  
另外想增加一个条件判断。
如果时间列“实际发货时日期”为空,则“发货状态”为未发货,反之为已发货。

帮助文件以及看了,但是还是整不出来。

还请帮忙别写上面的时间计算及发货状态标记的全部语句,万分感谢。


--  作者:有点蓝
--  发布时间:2019/7/16 20:12:00
--  
Select Case e.DataCol.Name
    Case "预付款_日期","实际发货日期"
        Dim dr2 As DataRow = e.DataRow
        If dr2.IsNull("预付款_日期") OrElse dr2.IsNull("实际发货日期") Then
            dr2("实际交期") = Nothing
        Else
            Dim tp As TimeSpan = cdate(dr2("实际发货日期") )- cdate(dr2("预付款_日期") )
            dr2("实际交期") = tp.TotalDays
        End If
End Select
Select Case e.DataCol.Name
    Case "实际发货日期"
        If e.DataRow.IsNull("实际发货日期") Then
            e.DataRow("发货状态") = "未发货"
        Else
            e.DataRow("发货状态") = "已发货"
        End If
End Select

--  作者:ideaplayer
--  发布时间:2019/7/17 0:56:00
--  
太感谢了