Foxtable(狐表)用户栏目专家坐堂 → 组装共通品合并加工


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

主题:组装共通品合并加工

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


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
组装共通品合并加工  发帖心情 Post By:2017/6/30 11:07:00 [只看该作者]

老师,您好!
在表《加工用制品构成》中有各个组装品的构成,如图:

图片点击可在新窗口打开查看此主题相关图片如下:制品构成1.png
图片点击可在新窗口打开查看

在《月度加工整体安排》中会对组装品作出安排计划安排,如在7月要生产明峰长床3台,短床2台,
调度安排是2台长床和1台短床 一个批次,调度号是1707排3,1台长床和1台短床1个批次,调度号是1707排4,

在《加工排产》表中,如下图:


图片点击可在新窗口打开查看此主题相关图片如下:加工排产1.png
图片点击可在新窗口打开查看

输入组装品名和制单号(一个调度号对应一个制单号),按下“导入加工品”按钮后,会将在《加工用制品构成》里
所要用到的单品导入进来,
现在出现了一个问题,如出现有共通品的情况,共通品需要合并加工:
例如:在1707排3调度号中,我先导入了长床的构成,后又导入了短床的构成
接下来希望将粗体字中的共通品进行合并,代码需要写在“合并共通品”命令里,
希望达到的效果是:

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

在同一个”调度“号中,①只留下最先出现的“部品ID",后出现的删掉行,
②”最终良品数“加在一起

请老师帮帮忙,谢谢!


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/6/30 11:19:00 [只看该作者]

剔除重复值,参考

 

Dim idx As String = "-1,"
Dim idx_temp As String = ""
Dim pdr As DataRow = Nothing
Dim count As Integer = 0
Dim cs As String = "第一列,第二列,第三列"
For Each dr As DataRow In DataTables("表A").Select("", cs)
   
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c) <> dr(c) Then
                flag = True
                Exit For
            End If
        Next
    End If
    If flag Then
        If count > 1 Then
            idx &= idx_temp
        End If
        count = 1
        idx_temp = ""
    Else
        count += 1
        idx_temp &= dr("_Identify") & ","
    End If
   
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

Tables("表A").filter = "_Identify not in (" & idx.trim(",") & ")"

'DataTables("表A").deletefor("_Identify not in (" & idx.trim(",") & ")")

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/6/30 11:21:00 [只看该作者]

 看懂2楼代码,如果要合计良品数,微调代码即可。

 

 具体问题,做个小例子上来测试。


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


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

谢谢老师,因水平有限,看不懂2楼代码,还需好好学学,
能否麻烦老师帮改改,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生产管理2017 - 测试.zip



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


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

开发者  qdkf

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/6/30 14:55:00 [只看该作者]

类似代码

 

Dim idx As String = "-1,"
Dim idx_temp As String = ""
Dim pdr As DataRow = Nothing
Dim count As Integer = 0
Dim cs As String = "部品id"
For Each dr As DataRow In DataTables("加工排产").Select("类别 = '计划'", cs)
   
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c) <> dr(c) Then
                flag = True
                Exit For
            End If
        Next
    End If
    If flag Then
        If count > 1 Then
            idx &= idx_temp
        End If
        count = 1
        idx_temp = ""
    Else
        count += 1
        idx_temp &= dr("_Identify") & ","
    End If
   
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

count = 0
For Each dr As DataRow In DataTables("加工排产").Select("类别 = '实际'", cs)
   
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c) <> dr(c) Then
                flag = True
                Exit For
            End If
        Next
    End If
    If flag Then
        If count > 1 Then
            idx &= idx_temp
        End If
        count = 1
        idx_temp = ""
    Else
        count += 1
        idx_temp &= dr("_Identify") & ","
    End If
   
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

Tables("加工排产").filter = "_Identify not in (" & idx.trim(",") & ")"
'DataTables("表A").deletefor("_Identify not in (" & idx.trim(",") & ")")


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


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

老师,如要先判断一下“调度”内容是否一致,
内容一致,再找出重复的,合并,最后删除,

请问老师,粗体的判断代码怎么写呢?






























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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/3 9:48:00 [只看该作者]

Dim t As Table = Tables("加工排产")
Dim dic As new Dictionary(of String, String)
For i As Integer = 0 To t.Rows.count - 1 Step 2
    Dim r1 As Row = t.Rows(i)
    Dim r2 As Row = t.Rows(i+1)
    Dim key As String = r1("部品id") & "|" & r1("调度")
    If dic.ContainsKey(key) = False Then
        dic.Add(key, r1("_Identify") & "," & r2("_Identify"))
    End If
Next
Dim idxs As String = ""
For Each key As String In dic.Keys
    idxs &= dic(key) & ","
Next
'msgbox(idxs)
t.filter = "_Identify in (" & idxs.trim(",") & ")"
[此贴子已经被作者于2017/7/3 9:48:30编辑过]

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


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

如果要合计良品数,微调代码即可

粗体不会,不知道怎么调,能不能麻烦老师帮写写,麻烦老师了!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/3 14:08:00 [只看该作者]

Dim t As Table = Tables("加工排产")
Dim dic As new Dictionary(of String, String)
For i As Integer = 0 To t.Rows.count - 1 Step 2
    Dim r1 As Row = t.Rows(i)
    Dim r2 As Row = t.Rows(i+1)
    Dim key As String = r1("部品id") & "|" & r1("调度")
    If dic.ContainsKey(key) = False Then
        dic.Add(key, r1("_Identify") & "," & r2("_Identify"))
        r1("良品数") = t.compute("sum(良品数)", "部品id = '" & r1("部品id") & "' and 调度 = '" & r1("调度") & "'")
    End If
Next
Dim idxs As String = ""
For Each key As String In dic.Keys
    idxs &= dic(key) & ","
Next
'msgbox(idxs)
t.filter = "_Identify in (" & idxs.trim(",") & ")"

 回到顶部
总数 32 1 2 3 4 下一页