以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  组合件排产  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101003)

--  作者:zhangning
--  发布时间:2017/5/23 13:59:00
--  组合件排产
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:精益制造管理系统.rar

开发者:qdkf

老师,您好!
我想对组合件进行排产,组合件在我司主要是指类似焊接这样的工序,
例如:将A部品和B部品焊接,形成C部组(组合件)。
在“加工排产”窗口的“导入加工品”按钮中,
想要达到的效果是:

先判断一下所选的组装品的《加工用製品构成》是否含有部组,

如含有,则先引入部组所需要的部品名,假设有有2个,就是2行,

在这2行后面紧接着插入部组名,只占一行。

并按“优先级”升序排列,

现在的代码达不到以上要求,请老师帮帮忙,谢谢!



--  作者:有点色
--  发布时间:2017/5/23 14:13:00
--  

Dim filter1 As String
filter1 = "商品名 in (\'" & e.form.controls("CheckedComboBox1").Text.replace(",", "\',\'") & "\')"
Dim drs1 As List(Of DataRow) = DataTables("加工用製品构成").Select(filter1, "[优先级]")
Systemready = False
Dim t As Table = e.form.controls("Table1").Table
t.ResumeRedraw
t.StopRedraw
For i1 As Integer = 0 To drs1.count - 1
    Dim dr1 = t.addnew()
    Dim pr1 = drs1(i1)
    dr1("制品名") = pr1("商品名")
    dr1("部组名") = pr1("部组名")
    dr1("优先级") = pr1("优先级")
    dr1("类别") = "计划"
    dr1("制单号") = "" & e.form.controls("CheckedComboBox2").Text & ""
    dr1 = t.addnew()
    dr1("制品名") = pr1("商品名")
    dr1("部组名") = pr1("部组名")
    dr1("优先级") = pr1("优先级")
    dr1("类别") = "实际"
    dr1("制单号") = "" & e.form.controls("CheckedComboBox2").Text & ""
Next
t.ResumeRedraw
Systemready = True

DataTables("加工排产").Save()


--  作者:zhangning
--  发布时间:2017/5/23 16:27:00
--  
老师,我用的排序时:
Dim drs1 As List(Of DataRow) = DataTables("加工用製品构成").Select(filter1, "[优先级]")
出现的效果是:
4-1-1
4-1-11
4-1-12

4-2-1

等,我不想要这样的,我想要的效果是:
4-1-1
4-1-2
4-1-3

4-1-10
4-1-11
以此类推,请问老师,这样如何改编码呀?

--  作者:有点色
--  发布时间:2017/5/23 17:37:00
--  

 必须把你的优先级编号修改一下才行,改成这样的格式

 

04-01-01

04-01-11

04-01-12

 

04-02-01

04-02-10


--  作者:zhangning
--  发布时间:2017/5/24 9:47:00
--  
谢谢老师,忘了说明,过滤条件中还要加入,“优先级”不能为空,
另外,还希望在有部组的部品成员之后加入部组名,
例如有A和B两个部品,它们组合成C部组,
在导入时,先将A和B导入,放入“部品ID”列,紧接者导入部组名C,放入“部组名”列,

没有部组的,就只导入部品就行。

麻烦老师,请帮帮忙,谢谢!

--  作者:有点色
--  发布时间:2017/5/24 9:52:00
--  

1、filter1 = "商品名 in (\'" & e.form.controls("CheckedComboBox1").Text.replace(",", "\',\'") & "\') and 优先级 is not null"

 

2、没看懂你的意思,根据例子截图说明。


--  作者:zhangning
--  发布时间:2017/5/24 10:32:00
--  
在“加工用製品构成”表中,如果“部组名”列不为空,则说明是一个组合件,是由其后的“部品ID”列的部品组成的,
例如:“部组名” P88958141306部组是由“P88958141306"和”B88958141403“部品组成,
理想效果:在“加工排产”表中单击“导入加工品”时,先判断是否是部组品,如是则,先插入成员部品名,再导入部组名
理想效果如下:
部组名部品ID
P88958141306
B88958141403
P88958141306
P88958131903
B88958131701
P88958131903
B88958112300
B88958112700
B88958111903
P889581126

--  作者:有点色
--  发布时间:2017/5/24 10:57:00
--  

Dim filter1 As String
filter1 = "商品名 in (\'" & e.form.controls("CheckedComboBox1").Text.replace(",", "\',\'") & "\')  and 优先级 Is Not null and 部组名 Is Not null"
Dim bzs As List(Of String) = DataTables("加工用製品构成").GetValues("部组名", filter1, "优先级")
Systemready = False
Dim t As Table = e.form.controls("Table1").Table
t.ResumeRedraw
t.StopRedraw
For Each bz As String In bzs
    Dim ndr As Row
    Dim pr As DataRow
    For Each pr In DataTables("加工用製品构成").Select("部组名 = \'" & bz & "\'", "优先级")
        ndr = t.addnew
        ndr("制品名") = pr("商品名")
        ndr("部品id") = pr("部品id")
        ndr("优先级") = pr("优先级")
        ndr("类别") = "计划"
        ndr("制单号") = "" & e.form.controls("CheckedComboBox2").Text & ""
        ndr = t.addnew()
        ndr("制品名") = pr("商品名")
        ndr("部品id") = pr("部品id")
        ndr("优先级") = pr("优先级")
        ndr("类别") = "实际"
        ndr("制单号") = "" & e.form.controls("CheckedComboBox2").Text & ""
    Next
    ndr = t.addnew()
    ndr("制品名") = pr("商品名")
    ndr("部组名") = pr("部组名")
    ndr("优先级") = pr("优先级")
    ndr("类别") = ""
    ndr("制单号") = "" & e.form.controls("CheckedComboBox2").Text & ""
Next

filter1 = "商品名 in (\'" & e.form.controls("CheckedComboBox1").Text.replace(",", "\',\'") & "\') and 优先级 Is Not null and 部组名 Is null"
Dim drs1 As List(Of DataRow) = DataTables("加工用製品构成").Select(filter1, "[优先级]")
For i1 As Integer = 0 To drs1.count - 1
    Dim dr1 = t.addnew()
    Dim pr1 = drs1(i1)
    dr1("制品名") = pr1("商品名")
    dr1("部组名") = pr1("部组名")
    dr1("优先级") = pr1("优先级")
    dr1("类别") = "计划"
    dr1("制单号") = "" & e.form.controls("CheckedComboBox2").Text & ""
    dr1 = t.addnew()
    dr1("制品名") = pr1("商品名")
    dr1("部组名") = pr1("部组名")
    dr1("优先级") = pr1("优先级")
    dr1("类别") = "实际"
    dr1("制单号") = "" & e.form.controls("CheckedComboBox2").Text & ""
Next

t.ResumeRedraw
Systemready = True

DataTables("加工排产").Save()


--  作者:zhangning
--  发布时间:2017/5/24 11:08:00
--  
谢谢老师


--  作者:zhangning
--  发布时间:2017/5/25 15:09:00
--  
老师,还有一个问题,
在“加工排产”表中,对依据制品的集结日对各工序的时间有一个倒退,
现在想要分开一下:
1.对“部品ID”和“部组名”只有一个的,仍然沿用原规则进行时间倒退,
2.对“部品ID”和“部组名”都有的,就比较复杂了

对于部组内的”部品ID"的末序的最后“_结束日” 就是 部组的  ”第1序_配膳日“
(因为先加工出各部品,完事后,再进行部组)

自己搞不定,麻烦老师,谢谢!