以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  设备快速选择  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99988)

--  作者:zhangning
--  发布时间:2017/5/2 14:21:00
--  设备快速选择
在“工程和工时”表中,列出了 产品的工序(工程)是在哪些机器上加工的(比如MM产品MM工序是在A1或A2机器上生产的)。
在“加工排产”表中,已知工序,如何自工序(工程名)后面的“调度设备”里的 的列属性里,过滤出“工程和工时”里的那几种设备,
(比如在MM产品的MM工序的“调度设备”,单击时,会出现列项目选择(A1/A2),可以单击选A1或A2,
请问老师,如何达到这种效果?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:精益制造管理系统.rar

管理员 qdrA001

谢谢老师!

--  作者:有点色
--  发布时间:2017/5/2 15:12:00
--  

prepareEdit事件

 

If e.Col.name Like "*调度设备*" Then
    Dim str As String = ""
    Dim filter As String = "部品id = \'" & e.Row("部品id") & "\'"
    Dim idx As String = e.Col.Name.Replace("第", "").Replace("序_调度设备", "")
    Dim fdr As DataRow = DataTables("工程和工时").Find(filter & " and 工序序号 = \'" & idx & "\'")
    If fdr IsNot Nothing Then
        For Each dc As DataCol In DataTables("工程和工时").DataCols
            If dc.name.StartsWith("使用机器") AndAlso fdr.IsNull(dc.name) = False Then
                str &= fdr(dc.name) & "|"
            End If
        Next
    End If
    e.Col.ComboList = str
End If


--  作者:zhangning
--  发布时间:2017/5/2 15:47:00
--  
谢谢老师,我点击了一下有设备的工序,没反应,不知问题出在哪里?
请老师帮看看,谢谢!


--  作者:有点色
--  发布时间:2017/5/2 15:55:00
--  
以下是引用zhangning在2017/5/2 15:47:00的发言:
谢谢老师,我点击了一下有设备的工序,没反应,不知问题出在哪里?
请老师帮看看,谢谢!

 

请看懂2楼代码,根据你的 部品id和工程序号 查找对应的值的。必须匹配才有值。

 

也有可能理解错了你的意思,请截图举例说明你要的功能


--  作者:zhangning
--  发布时间:2017/5/2 16:28:00
--  
Dim idx As String = e.Col.Name.Replace("第", "").Replace("序_调度设备", "")
    Dim fdr As DataRow = DataTables("工程和工时").Find(filter & " and 工序序号 = \'" & idx & "\'")
老师,这两句我看不明白,麻烦老师给解释一下吧,谢谢!

--  作者:有点色
--  发布时间:2017/5/2 16:32:00
--  

为了取出序号的值,比如 1、2、3、4这样的值

Dim idx As String = e.Col.Name.Replace("第", "").Replace("序_调度设备", "")

 

去工程工时表,查找符合条件的值 "部品id = \'" & e.Row("部品id") & "\' and 工序序号 = \'" & idx & "\'"

Dim fdr As DataRow = DataTables("工程和工时").Find(filter & " and 工序序号 = \'" & idx & "\'")


--  作者:zhangning
--  发布时间:2017/5/3 11:27:00
--  
解决了,谢谢老师
--  作者:zhangning
--  发布时间:2017/5/3 11:34:00
--  
另有一个问题,还要麻烦老师:如在“工程和工时”表中,
如何按照相同“部品ID",给”工序序号“列自动排号
效果如图
图片点击可在新窗口打开查看此主题相关图片如下:1123.png
图片点击可在新窗口打开查看

请老师帮帮忙,谢谢!

--  作者:有点色
--  发布时间:2017/5/3 11:39:00
--  

参考

 

Dim dt As DataTable = DataTables("工程和工时")
For Each id As String In dt.GetValues("部品id")
    Dim drs As List(Of DataRow) = dt.Select("部品id = \'" & id & "\'", "_sortkey")
    For i As Integer = 0 To drs.count-1
        drs(i)("工序序号") = i + 1
    Next
Next


--  作者:zhangning
--  发布时间:2017/5/3 13:08:00
--  
老师,这三句不明白
Dim drs As List(Of DataRow) = dt.Select("部品id = \'" & id & "\'", "_sortkey")
    For i As Integer = 0 To drs.count-1
        drs(i)("工序序号") = i + 1
特别是最后一句

代码放在datacolchanged中,没有反应,是不是我放的位置不对?