Foxtable(狐表)用户栏目专家坐堂 → 父产品时间匹配


  共有1740人关注过本帖树形打印复制链接

主题:父产品时间匹配

美女呀,离线,留言给我吧!
zhangning
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
父产品时间匹配  发帖心情 Post By:2017/5/26 16:09:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看

老师,您好!
如图所示,在“部组名”和“部品ID"列,
【1.如”部组名“列不为空,”部品ID"为空,则是部组,
    部组的意思是父产品】
【2.如”部组名“列不为空,”部品ID"也不为空,则是部组成员,
    部组成员的意思是子产品,】
3.父产品是由子产品组成的,

现有的数据中已经将父产品(部组)的”第1序_配膳日“的时间已经算出来了,
子产品(部品ID)的各工序和工序各耗时也已经导入了,

现在要做的是,根据父产品的”第1序_配膳日“倒推子产品的各工序时间,
逻辑请参考
 If e.DataCol.name = "第1序_配膳日"  OrElse e.DataCol.name.EndsWith("_工程名")
 If e.DataRow.IsNull("部组名") = True AndAlso e.DataRow.IsNull("部品ID") = True
        Dim d As Date = e.DataRow("第1序_配膳日")
        If d <> Nothing Then
            Dim idx As Integer = 0
            For i As Integer = 12 To 1 Step -1
                If e.DataRow.Isnull("第" & i & "序_工程名") = False Then
                    idx += 1
                    Dim lg As String = "第" & i & "序_"
                    Dim jsrq, ksrq As Date
                    If idx = 1 Then
                        jsrq = d.AddDays(-2)
                        If jsrq.DayOfWeek = 5 OrElse jsrq.DayOfWeek = 6 OrElse jsrq.DayOfWeek = 0 Then
                            jsrq = jsrq.AddDays(-1)
                        End If
                    Else
                        jsrq = d.AddDays(-1)
                        If jsrq.DayOfWeek = 6 OrElse jsrq.DayOfWeek = 0 Then
                            jsrq = jsrq.AddDays(-1)
                        End If
                    End If
                    If e.DataTable.DataCols.Contains(lg & "结束日") Then
                        e.DataRow(lg & "结束日") = jsrq
                    End If
                    ksrq = jsrq.AddDays(-e.DataRow(lg & "标准耗时天"))
                    Dim scount As Integer = 0
                    For j As Integer = 1 To e.DataRow(lg & "标准耗时天")
                        Dim tempd As Date = jsrq.AddDays(-j)
                        If tempd.DayOfWeek = 0 Then
                            scount += 1
                        End If
                    Next
                    ksrq = ksrq.AddDays(-scount)
                    If e.DataTable.DataCols.Contains(lg & "结束日") Then
                        e.DataRow(lg & "开始日") =  ksrq
                    End If
                    If ksrq.DayOfWeek = 0 OrElse ksrq.DayOfWeek = 1 OrElse ksrq.DayOfWeek = 2 Then
                        ksrq = ksrq.AddDays(-1)
                    End If
                    If e.DataTable.DataCols.Contains(lg & "配膳日") Then
                        e.DataRow(lg & "配膳日") = ksrq.AddDays(-2)
                    End If
                    d = ksrq.AddDays(-2)
                End If
            Next
        End If
End If
End If

有一个问题是,父产品与子产品不是在同一行上,一个是子产品在上,父产品在下(部组名和部品ID均不为空),
需要根据子产品去找到父产品的“第1序_配膳日”
除了红色背景以外的,其他的地方也可能不对,

由于水平有限,请老师帮帮忙,谢谢!



 回到顶部
美女呀,离线,留言给我吧!
zhangning
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2017/5/27 8:07:00 [只看该作者]



类别部组名部品ID第1序_工程名第1序_配膳日第6序_工程名第6序_结束日
计划P88958121404B88958121501
实际P88958121404B88958121501
计划P88958121404B88958121602
实际P88958121404B88958121602
计划P88958121404B88958121701 2017/6/5需要通过代码引用过来
实际P88958121404B88958121701
计划P88958121404 W2017/6/5
实际P88958121404

 回到顶部
美女呀,离线,留言给我吧!
zhangning
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2017/5/27 8:08:00 [只看该作者]

上楼是 要达到的效果,请老师帮帮忙,谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107861 积分:548662 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/5/27 9:53:00 [只看该作者]

看的不是很懂,请上传例子测试

 回到顶部