以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  时间计划  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124017)

--  作者:cjl333333333
--  发布时间:2018/8/29 0:51:00
--  时间计划
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar


请教老师,这个项目我想通过计算时间的按扭,根据输入的日期 每天开始时间及结束时间计算“计划是间”及“完在时间”,请教老师这代码得怎么写?

--  作者:有点甜
--  发布时间:2018/8/29 9:58:00
--  

参考代码,细节或效率自己调整

 


Dim kssj As Date = "2018-08-29"
Dim mtks As Date = "08:00"
Dim mtjs As Date = "17:30"
Dim d As Date = new Date(kssj.year, kssj.month, kssj.day, mtks.hour, mtks.Minute, 0)
Dim sp1 As TimeSpan = mtks.AddDays(1)-mtjs
Dim sp2 As TimeSpan = mtjs-mtks
Dim t As Table = Tables("表A")
For Each r As Row In t.Rows
    r("计划生产时间") = d
    Dim sj As Double = r("额定任务时间")
    Do While sj > 0
        d = d.AddSeconds(60*30)
        If format(d, "HHmm") > Format(mtjs, "HHmm") Then
            d = d.AddSeconds(sp1.TotalSeconds)
        End If
        sj = sj - 60*30
    Loop
    r("计划完成时间") = d
Next

 


--  作者:cjl333333333
--  发布时间:2018/8/29 16:56:00
--  
解决了,谢谢老师


--  作者:cjl333333333
--  发布时间:2018/9/6 18:37:00
--  
老师,不好意思,还得再问你一下,这个代码我最近发现,它只能计算整点的,比如我上班是按排8:30分的,结构它总是显示从8:00开始计算?请问这怎么回事?再加上这段代码中,60*30这个是什么意思?


--  作者:有点甜
--  发布时间:2018/9/6 20:14:00
--  

1、

 

Dim mtks As Date = "08:00"

改成

 

Dim mtks As Date = "08:30"


 

2、d = d.AddSeconds(60*30)

 

意思是,每次增加30分钟,比较是否大于下班时间,如果下班了,就累计多加1天

[此贴子已经被作者于2018/9/6 20:14:00编辑过]

--  作者:cjl333333333
--  发布时间:2018/9/7 11:35:00
--  
老师,我在 Dim mtks As Date 是设置了变量,但不管我变量里是输入08:00还是08:30它都会变成08:00显示
 Dim RQ As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker3")
            Dim SSJ As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
            Dim XSJ As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker2")
            
        
Dim T As String = CurrentTable.Name
            Dim kssj As Date = RQ.Value
            Dim mtks As Date =  SSJ.Value
            Dim mtjs As Date =  XSJ.Value
            Dim d As Date = new Date(KSSJ.year, KSSJ.month, KSSJ.day, MTKS.hour, MTJS.Minute, 0)
            Dim sp1 As TimeSpan = mtks.AddDays(1)-mtjs
            Dim sp2 As TimeSpan = mtjs-mtks
            Dim t1 As Table = Tables(T)
            For Each r As Row In t1.Rows
                r("计划生产时间") = d
                Dim sj As Double = r("额定生产时间")
                Do While sj > 0
                    d = d.AddSeconds(60*30)
                    If format(d, "HHmm") > Format(mtjs, "HHmm") Then
                        d = d.AddSeconds(sp1.TotalSeconds)
                    End If
                    sj = sj - 60*30
                Loop
                r("计划完成时间") = d
            Next
我代码是改成这样的。

--  作者:有点甜
--  发布时间:2018/9/7 11:59:00
--  

如果你直接改成下面这样测试,有没有问题?

 

Dim mtks As Date = "08:30"

 


--  作者:cjl333333333
--  发布时间:2018/9/7 22:28:00
--  
老师,改为08:30 就可以的。