工单号为5位序数+固定前后缀, 5位数及以内使用正常,但当超过5位数(操作错误)理论上无法找到对应工单(因为不存在),此时显示也正常,但系统会自动置值SystemReady=false,导致无法继续操作如何动作,只能关闭重启.
Try
Dim CellN As String = e.Form.Controls("CBox_Cell").Value
Dim Filter As String
If DataTables.Contains("ResourceID") = False Then
DataTables("ResourceID").Loadfilter = ""
DataTables("ResourceID").Load
End If
With e.Form.Controls("CBox_Res") '存在资源号
If .Value IsNot Nothing Then
Filter = Filter & "ResID = '" & .Value.ToUpper.trim & "'" '指定资源号
Else ' 不存在资源号
With e.Form.Controls("CBox_ResCat")
If .value IsNot Nothing AndAlso .value <> "All" Then '存在资源类别
Dim ResCat As String = .Value
If Filter > "" Then
Filter = Filter & " And "
End If
Dim Res As String
For Each dr As DataRow In DataTables("ResourceID").DataRows
If dr("Catalog_中文") = ResCat Then
If Res = "" Then
Res = "'" & dr("ResID") & "'"
Else
Res = Res & ",'" & dr("ResID") & "'"
End If
End If
Next
Res = "(" & Res & ")"
Filter = Filter & "ResID in " & Res '资源类别
''MessageBox.Show("Click1")
Else '不存在资源类别
If CellN <> "" AndAlso CellN <> "(All)" Then '存在 班组名
If Filter > "" Then
Filter = Filter & " And "
End If
Dim Res As String
For Each dr As DataRow In DataTables("ResourceID").DataRows
If dr("适用于标准化后的班组名称") = CellN Then
Res = Res & ",'" & dr("ResID") & "'" '班组
End If
Next
If Res > "" Then
Res = Res.Trim(",")
Res = "(" & Res & ")"
Filter = Filter & "ResID in " & Res
End If
End If
End If
End With
End If
End With
'MessageBox.Show("1aFilter=" & Filter)
Dim WO As String
With e.Form.Controls("TBox_WO")
If .Value IsNot Nothing Then
WO = .Value.toupper.trim
If WO <> "" AndAlso Wo.Length > 0 Then
If Filter IsNot Nothing Then
Filter = Filter & " And "
End If
Filter = Filter & "[WO] like '%" & WO & "%'" '[型号] Like 'A[*]%'
End If
End If
End With
With e.Form.Controls("TBox_PN")
If .Value IsNot Nothing Then
Dim PN As String = .Value.Toupper.trim
If PN <> "" AndAlso PN.Length > 0 Then
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "[PartNumber] like '%" & PN & "%'"
End If
End If
End With
'MessageBox.Show("1bFilter=" & Filter)
With e.Form.Controls("StartDate_OP")
If .Value IsNot Nothing Then
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "(Adj_StartTime >= #" & .Value & "# or Adj_StartTime is null )"
End If
End With
With e.Form.Controls("EndDate_OP")
If .Value IsNot Nothing Then
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "(Adj_EndTime < #" & .Value.adddays(1) & "# or Adj_EndTime is null)"
End If
End With
With e.Form.Controls("StartDate_WO")
If .Value IsNot Nothing Then
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "(DeliveryDate >= #" & .Value & "# or DeliveryDate is null)"
End If
End With
With e.Form.Controls("EndDate_WO")
If .Value IsNot Nothing Then
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "(DeliveryDate < #" & .Value.adddays(1) & "# or DeliveryDate is null)"
End If
End With
If e.Form.Controls("Ratio_OnGoing_COp").Checked = True Then '本工序进行中
If Filter > "" Then
Filter = Filter & " And "
End If
If e.Form.Controls("CBox_Cell").Value = "采购组" Then
Filter = Filter & ( "OPStatus ='OG'")
Else
Filter = Filter & ( "OPStatus = 'G'")
End If
ElseIf e.Form.Controls("Ratio_Uncmpt_COp").Checked = True Then '本工序未开始
If Filter > "" Then
Filter = Filter & " And "
End If
If e.Form.Controls("CBox_Cell").Value = "采购组" Then
Filter = Filter & "(OPStatus Like 'O*' OR OPStatus is null )"
Else
Filter = Filter & "(OPStatus in ('W','R','U','F') or OPStatus is null) "
End If
ElseIf e.Form.Controls("Ratio_Uncmpt_COp1").Checked = True Then '本工序进行中+未开始
If Filter > "" Then
Filter = Filter & " And "
End If
If e.Form.Controls("CBox_Cell").Value = "采购组" Then
Filter = Filter & ( "OPStatus like ='O*' OR OPStatus is null")
Else
Filter = Filter & "(OPStatus in ('G','W','R','U','F') or OPStatus is null) "
End If
ElseIf e.Form.Controls("Ratio_Cmpt_COp").Checked = True Then '本工序已完成
If Filter > "" Then
Filter = Filter & " And "
End If
If e.Form.Controls("CBox_Cell").Value = "采购组" Then
Filter = Filter & "OPStatus ='CO'"
Else
Filter = Filter & ( "OPStatus like 'C*' and OPStatus <>'CO'")
End If
End If
If e.Form.Controls("Rbtn_NPI").Checked = True Then 'NPI/Mass
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "NPI = true"
End If
If e.Form.Controls("Rbtn_Mass").Checked = True Then 'NPI/Mass
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "NPI = false"
End If
'MessageBox.Show("2Filter=" & Filter)
If e.Form.Controls("RBtn_OP_Delivery_M3").Checked = True Then '工序停滞超过3天
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "StayDays > 3"
End If
'MessageBox.Show("3Filter=" & Filter)
Dim bDate As Date
Dim eDate As Date
If e.Form.Controls("RBtn_PN_Delivery_M3").Checked = True Then '产品交期超过3天
If Filter > "" Then
Filter = Filter & " And "
End If
bDate = Date.Today
eDate = Date.Today.AddDays( - 3)
Filter = Filter & "ProductDeliveryDate <= #" & eDate & "#"
End If
If e.Form.Controls("RBtn_PN_Delivery_M03").Checked = True Then '产品交期3天以内(含超期2天至今)
If Filter > "" Then
Filter = Filter & " And "
End If
bDate = Date.Today.AddDays( - 2)
eDate = Date.Today.AddDays(3)
Filter = Filter & "ProductDeliveryDate >= #" & bDate & "# and ProductDeliveryDate <= #" & eDate & "#"
End If
If e.Form.Controls("RBtn_PN_Delivery_M5").Checked = True Then '产品交期未来5天内
If Filter > "" Then
Filter = Filter & " And "
End If
bDate = Date.Today.AddDays(0)
eDate = Date.Today.AddDays(5)
Filter = Filter & "ProductDeliveryDate > #" & bDate & "# and ProductDeliveryDate <= #" & eDate & "#"
End If
If e.Form.Controls("CheckBox_Shippinglist").Checked = True Then '当期(列入Shipping List)
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "ShippingRowSign = 'Y'"
End If
If e.Form.Controls("CheckBox_R").Checked = True Then '
If Filter > "" Then
Filter = Filter & " And "
End If
Filter = Filter & "OPStatus = 'R'"
End If
'MessageBox.Show(Filter)
If Loadtype = 1 Then '动态加载
DataTables("INISecondarySchedule").LoadFilter = Filter
DataTables("INISecondarySchedule").Load
'ElseIf LoadType = 2 Then '预加载
End If
Dim r As DataRow = DataTables("Data").Find("文件更新_文件名 = 'BK_INI Production Schedule.xlsx'")
e.Form.Controls("Label_Time").Text = "最近更新:" & Format(r("文件更新_时间"), "G")
'排序
MessageBox.Show(Tables("INISecondarySchedule_Table1").Rows.Count)
If Tables("INISecondarySchedule_Table1").Rows.Count > 0 Then
If e.Form.Controls("Ratio_OPDeliveryDate").Checked = True Then '工序交期排序
Tables("INISecondarySchedule_Table1").Sort = "Adj_StartTime"
ElseIf e.Form.Controls("Ratio_ShippingListDeliveryDate").Checked = True Then '当期交付排序
Tables("INISecondarySchedule_Table1").Sort = "ShippingRowSign Desc, DeliveryDate"
ElseIf e.Form.Controls("Ratio_PNDeliveryDate").Checked = True Then '产品交期排序
Tables("INISecondarySchedule_Table1").Sort = "DeliveryDate"
ElseIf e.Form.Controls("Ratio_NoSort").Checked = True Then
'不进行排序操作
'MessageBox.Show("不排序")
Tables("INISecondarySchedule_Table1").sort = ""
End If
Else
SystemReady = True
MessageBox.Show(1)
End if
Catch ex As Exception
SystemReady = True
MessageBox.Show (space(8) & ",确认请按[是/Yes],否则请退出......", "系统提示")
End Try
SystemReady = True
为了测试程序执行的步骤, 我增加了try...指令,并在其中设置了Messagebox.show 指令和SystemReady=True, 结果发现都没有运行到这个指令段.
求大师帮忙解决. 谢谢!