以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教“天数计算”  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128217)

--  作者:xusuyang
--  发布时间:2018/12/1 12:14:00
--  请教“天数计算”
老师:您好!

     我在下表中设计了“订货日期”、“预定发货日期”、“发货剩余天数”、“延期发货天数”、“发货提醒”、“发货日期”、“订货公司”、“产品名称”、“订货数量”、“产品规格”、“订货数量”、“单位”等列。

要实现:

      1、当我在“订货日期”列输入中如2018-11-27;在“预定发货日期”列中输入如2018-12-03时;当我如在“2018-11-30日”打开此系统时,如何实现“发货剩余天数”列自动显示为“3”,而不是继续显示“4”?当我在”2018-12-01日”打开此系统时,如何实现发货剩余天数”列自动显示为“2”, 而不是继续显示“4”?

      2、若如期未发货(即:未在“发货日期”输入日期),当我如在“2018-12-06日”打开此系统时,“发货剩余天数”列自动显示为“-2”?当我如在“2018-12-07日”打开此系统时,“发货剩余天数”列自动显示为“-3”?

    原有代码:

Select Case e.DataCol.name
    Case "订货日期","预定发货日期"
        If e.DataRow.IsNull("订货日期") OrElse e.DataRow.IsNull("预定发货日期") Then
            e.DataRow("发货剩余天数") = Nothing
        Else
            Dim y,m,d As Integer
            Dim dt1 As Date = Date.Today
            Dim dt2 As Date = e.DataRow("预定发货日期")
            DateYMD(dt1,dt2,y,m,d)
            dt1 = dt1.AddYears(y)
            d= (dt2- dt1).TotalDays() + 1
            e.DataRow("发货剩余天数") =  d
        End If
End Select
请问老师如何修改一下代码才能实现?谢谢!!!

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


--  作者:don
--  发布时间:2018/12/1 13:19:00
--  
Dim y,m,d As Integer
Dim dt1 As Date = #12/1/2018#     \'Date.Today
dt1 =dt1.AddDays(1)
Dim dt2 As Date =#12/3/2018#        \'e.DataRow("预定发货日期")
DateYMD(dt1,dt2,y,m,d)

d=  (dt2- dt1).TotalDays() +1
If dt1 > dt2  Then
    d = d+1
End If
Output.Show(d)    
\'e.DataRow("发货剩余天数") =  d

--  作者:don
--  发布时间:2018/12/1 13:25:00
--  
因[发货剩余天数]日日變,列事件不合適,宜用項目事件AfterOpenProject
--  作者:有点蓝
--  发布时间:2018/12/1 14:17:00
--  
参考:http://www.foxtable.com/webhelp/scr/1587.htm