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


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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/5 15:55:00 [显示全部帖子]

做个按钮

 

Dim t As Table = Tables("加工排产")
For Each rr As Row In t.Rows
    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
            cc.ComboList = str
            Dim ary = str.split("|")
            If ary.length > 0 Then
                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
            cc.ComboList = str
            Dim ary = str.split("|")
            If ary.length > 0 Then
                rr(cc.name) = ary(0)
            End If
        End If
    Next
Next


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/6 8:39:00 [显示全部帖子]

判断值,为空的再添加。

 

Dim t As Table = Tables("加工排产")
For Each rr As Row In t.Rows
    For Each cc As Col In t.Cols
        If cc.name Like "*调度设备*" AndAlso rr.isNull(cc.name) Then


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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")


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


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

上传实例说明问题。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 


 回到顶部