以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 排产时间变更 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132582)
|
-- 作者:有点甜
-- 发布时间:2019/3/25 15:25:00
--
Select Case e.DataCol.Name Case "实际开始日期" If e.oldvalue <> Nothing AndAlso e.oldvalue <> e.newvalue Then Dim sp As TimeSpan = e.newvalue-e.oldvalue For Each r As DataRow In e.DataTable.Select("加工顺序 > " & e.DataRow("加工循序")) r("实际完成日期") = cdate(r("实际开始日期")).AddSeconds(sp.TotalSeconds) Next End If End Select SystemReady = True
|
-- 作者:有点蓝
-- 发布时间:2019/3/25 22:12:00
--
没看懂您的逻辑。上传实例。
同时截图说明:原来的数据是怎么样的?改了哪个数据?最后希望得到什么结果?
|
-- 作者:有点蓝
-- 发布时间:2019/3/25 22:43:00
--
实际开始日期+待加工数\\任务量 --- 没看懂,具体是什么计算的
|
-- 作者:有点甜
-- 发布时间:2019/3/26 10:03:00
--
这个问题你很久以前问过啊,请参考之前给你写的代码啊
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=111698&authorid=0&page=0&star=1
|
-- 作者:有点甜
-- 发布时间:2019/3/26 10:17:00
--
单独做一个按钮执行代码
Dim dt As DataTable = DataTables("生产排产表") Dim drs = dt.Select("", "加工顺序") For i As Integer = 1 To drs.count-1 Dim dr = drs(i-1) dr("实际完成日期") = cdate(dr("实际开始日期")).adddays(dr("计划数量") / dr("任务量")) If dr("加工顺序") = drs(i)("加工顺序") Then drs(i)("实际开始日期") = dr("实际开始日期") Else If dr("使用设备") = drs(i)("使用设备") Then drs(i)("实际开始日期") = dr("实际完成日期") Else drs(i)("实际开始日期") = cdate(dr("实际开始日期")).AddHours(8) End If End If dr = drs(i) dr("实际完成日期") = cdate(dr("实际开始日期")).adddays(dr("计划数量") / dr("任务量")) Next
|
-- 作者:有点甜
-- 发布时间:2019/3/26 11:09:00
--
Select Case e.DataCol.Name Case "实际开始日期" SystemReady = False If e.oldvalue <> Nothing AndAlso e.oldvalue <> e.newvalue Then Dim dt As DataTable = DataTables("生产排产表") Dim drs = dt.Select("加工顺序 > " & e.DataRow("加工循序"), "加工顺序") For i As Integer = 1 To drs.count-1 Dim dr = drs(i-1) dr("实际完成日期") = cdate(dr("实际开始日期")).adddays(dr("计划数量") / dr("任务量")) If dr("加工顺序") = drs(i)("加工顺序") Then drs(i)("实际开始日期") = dr("实际开始日期") Else If dr("使用设备") = drs(i)("使用设备") Then drs(i)("实际开始日期") = dr("实际完成日期") Else drs(i)("实际开始日期") = cdate(dr("实际开始日期")).AddHours(8) End If End If dr = drs(i) dr("实际完成日期") = cdate(dr("实际开始日期")).adddays(dr("计划数量") / dr("任务量")) Next End If SystemReady = True End Select
|
-- 作者:有点甜
-- 发布时间:2019/3/26 12:14:00
--
哦,代码改成
Select Case e.DataCol.Name Case "实际开始日期" SystemReady = False Dim dt As DataTable = e.DataTable Dim drs = dt.Select("加工顺序 >= " & e.DataRow("加工顺序"), "加工顺序") For i As Integer = 1 To drs.count-1 Dim dr = drs(i-1) dr("实际完成日期") = cdate(dr("实际开始日期")).adddays(dr("计划数量") / dr("任务量")) If dr("加工顺序") = drs(i)("加工顺序") Then drs(i)("实际开始日期") = dr("实际开始日期") Else If dr("使用设备") = drs(i)("使用设备") Then drs(i)("实际开始日期") = dr("实际完成日期") Else drs(i)("实际开始日期") = cdate(dr("实际开始日期")).AddHours(8) End If End If dr = drs(i) dr("实际完成日期") = cdate(dr("实际开始日期")).adddays(dr("计划数量") / dr("任务量")) Next SystemReady = True End Select
|