Foxtable(狐表)用户栏目专家坐堂 → 代替人工,点选列项目首项


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

主题:代替人工,点选列项目首项

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


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

加上判断

 

Dim t As Table = Tables("加工排产")
For Each rr As Row In t.Rows

    If rr("类别") = "计划" Then
        For Each cc As Col In t.Cols
            If cc.name Like "*调度设备*" AndAlso rr.isNull(cc.name) Then


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


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

老师,在争设备的代码处,我想加入一个条件,
条件是:先判断一下工程在“工程和工时”表中,的“加工工序”列是不是TRUE,
如是,则执行原来的那些代码,如是FALSE,则填充“使用机器1”的内容,

因水平有限,还得麻烦老师帮帮忙,谢谢!



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


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

加上判断

 

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

 

改成

 

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


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


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

老师,实验了一下,还有如下问题,请老师帮看看,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:问题.xls



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


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

上传实例说明问题。

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


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

老师,这是现状的
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:精益制造改1.rar

开发者  qdkf
----------------------------------------------------------------------------------------
希望达到的效果是:
如是工程在“工程和工时”中的“加工工序”列是TRUE 则说明时加工工序,则需要争设备
根据同一台设备在同一时间内,只能加工一种产品的原理,如出现在同一时间内,多种产品都用了同一台设备,则属于争设备,
如出现争设备,则要优先在表中前面出现的产品使用,前面是指在表中从上往下,重要度已经按降序排列好了,
每种产品所使用的机器,优先是“使用机器1”,之后是“使用机器2”,
如“使用机器1”被占用,则选“使用机器2”,如“使用机器2”也被占用的话,就选“使用机器3”,以此类推。。。。。

如不是加工工序,则没有争设备的情况,在各工序的“调度设备”处直接显示“使用设备1”即可。
---------------------------------------------------------------------------------------------------
现状存在的问题如下:

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


争抢设备处还没有验证。

情况比较复杂,请老师帮帮忙,麻烦老师了,图片点击可在新窗口打开查看图片点击可在新窗口打开查看



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


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

没看懂你逻辑,照抄你prepareEdit事件的代码的,细节自行调整

 

Dim t As Table = Tables("加工排产")
For Each rr As Row In t.Rows
    If rr("类别") = "计划" Then
        For Each cc As Col In t.Cols
           
            If cc.name Like "*调度设备*" Then
                Dim str As String = ""
                Dim filter As String = "部品ID = '" & rr("部品ID") & "'"
                Dim idx As String = cc.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
                If str > "" Then
                    Dim ary = str.split("|")
                    rr(cc.name) = ary(0)
                End If
            End If
            If cc.name Like "*调度设备*" Then
                Dim str As String = ""
                Dim filter As String = "部品ID = '" & rr("部品ID") & "'"
                Dim idx As String = cc.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
                            Dim flag As Boolean = True
                            For Each c As Col In t.Cols
                                If c.name Like "*调度设备*" Then
                                    Dim i As Integer = c.Name.Replace("第", "").Replace("序_调度设备", "")
                                    For Each dr As DataRow In t.DataTable.Select(c.name & " = '" & fdr(dc.name) & "'")
                                        If dr("第" & i & "序_开始日") < rr("第" & i & "序_开始日") Then
                                            If dr("第" & i & "序_结束日") >= rr("第" & i & "序_开始日") Then
                                                flag = False
                                            End If
                                        ElseIf dr("第" & i & "序_开始日") >= rr("第" & i & "序_开始日") Then
                                            If dr("第" & i & "序_开始日") <= rr("第" & i & "序_结束日") Then
                                                flag = False
                                            End If
                                        End If
                                    Next
                                    If flag = False Then Exit For
                                End If
                            Next
                            If flag = True Then
                                str &= fdr(dc.name) & "|"
                            End If
                        End If
                    Next
                End If
                If str > "" Then
                    Dim ary = str.split("|")
                    rr(cc.name) = ary(0)
                End If
            End If
           
           
        Next
    End If
Next


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


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

老师,谢谢您!

现在还需要加入条件:

1. If e.DataRow.IsNull("部组名") = True AndAlso e.DataRow.IsNull("部品ID") = False
    执行以上代码
  或   If e.DataRow.IsNull("部组名") = False AndAlso e.DataRow.IsNull("部品ID") = False

    也需要执行以上代码
2.If e.DataRow.IsNull("部组名") = False AndAlso e.DataRow.IsNull("部品ID") = true

需要将以上代码中的”部品ID"更改成“部组名”

请问老师,这个如何追加代码呀,特别是第一个条件,请老师教教我,谢谢!





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


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

 

 

If rr("类别") = "计划"  Then

  If rr.IsNull("部组名") = True AndAlso rr.IsNull("部品ID") = False Then

 

  ElseIf rr.IsNull("部组名") = False AndAlso rr.IsNull("部品ID") = False Then

 

  ElseIf rr.IsNull("部组名") = False AndAlso rr.IsNull("部品ID") = true Then

 

  End If

 


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


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

OK,搞定,等数据全了,再验证一下争设备,
非常感谢老师,这样在排生产计划时就轻松多了,点几下鼠标就解决了,
效率大大提高,老师万岁!呵呵!

 回到顶部
总数 20 上一页 1 2