表中datacolchanged事件代码如下,经测试重置或合并导入"钣金喷涂工艺数值","焊接点数","焊接段数"导致数值发生变化时会卡死,是何原因,有无好的办法?
Select Case e.DataCol.Name
Case "钣金喷涂工艺数值","焊接点数","焊接段数","单件汇报次数"
DataTables("零件工艺").DataCols("工序名称").RaiseDataColChanged()
End Select
Select Case e.DataCol.Name
Case "工序名称"
If e.NewValue Is Nothing Then '如果新值是空白,也就是品名列的内容为空
e.DataRow("计件工序") = Nothing '那么清空此行单价列的内容
e.DataRow("工艺参数单位") = Nothing
e.DataRow("加工单价") = Nothing
e.DataRow("单件工作量") = Nothing
e.DataRow("钣金喷涂工艺数值")= Nothing
e.DataRow("焊接点数")= Nothing
e.DataRow("焊接段数")= Nothing
ElseIf e.DataRow("工序名称") = "焊接" Then
e.DataRow("钣金喷涂工艺数值")= Nothing
Dim dr As DataRow '否则在产品表查找同名的产品行,将找到的行赋值给变量dr
dr = DataTables("加工单价").Find("[工序名称] = '" & e.NewValue & "'")
If dr IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
e.DataRow("计件工序") = dr("计件工序")
e.DataRow("工艺参数单位")=dr("工艺参数单位")
e.DataRow("加工单价") = dr("加工单价")
If e.DataRow("工序名称") ="NC冲" Then
e.DataRow("单件工作量") =e.DataRow("工艺数值")/3600/e.DataRow("单件汇报次数")*e.DataRow("NC系数")
ElseIf e.DataRow("工序名称") = "剪床" Then
e.DataRow("单件工作量") =1/e.DataRow("工艺数值")/e.DataRow("单件汇报次数")
ElseIf e.DataRow("工序名称") = "辊压" Then
e.DataRow("单件工作量") =e.DataRow("工艺数值")/1000/e.DataRow("单件汇报次数")
End If
Else
e.DataRow("单件工作量") =e.DataRow("工艺数值")/e.DataRow("单件汇报次数")
End If
ElseIf e.DataRow("工序名称") <> "焊接" Then
e.DataRow("焊接点数")= Nothing
e.DataRow("焊接段数")= Nothing
Dim dr As DataRow '否则在产品表查找同名的产品行,将找到的行赋值给变量dr
dr = DataTables("加工单价").Find("[工序名称] = '" & e.NewValue & "'")
If dr IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
e.DataRow("计件工序") = dr("计件工序")
e.DataRow("工艺参数单位")=dr("工艺参数单位")
e.DataRow("加工单价") = dr("加工单价")
If e.DataRow("工序名称") ="NC冲" Then
e.DataRow("单件工作量") =e.DataRow("工艺数值")/3600/e.DataRow("单件汇报次数")*e.DataRow("NC系数")
ElseIf e.DataRow("工序名称") = "剪床" Then
e.DataRow("单件工作量") =1/e.DataRow("工艺数值")/e.DataRow("单件汇报次数")
ElseIf e.DataRow("工序名称") = "辊压" Then
e.DataRow("单件工作量") =e.DataRow("工艺数值")/1000/e.DataRow("单件汇报次数")
Else
e.DataRow("单件工作量") =e.DataRow("工艺数值")/e.DataRow("单件汇报次数")
End If
End If
End If
e.DataRow("单件计件工资")=e.DataRow("单件工作量")*e.DataRow("加工单价")
Case "图号"
If e.NewValue Is Nothing Then
e.DataRow("钣金喷涂工艺数值")= Nothing
e.DataRow("焊接点数")= Nothing
e.DataRow("焊接段数")= Nothing
e.DataRow("NC系数")= Nothing
Else
Dim ab As DataRow '否则在产品表查找同名的产品行,将找到的行赋值给变量dr
ab = DataTables("零件表").Find("[图号] = '" & e.NewValue & "'")
If ab IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
e.DataRow("NC系数") = ab("NC系数")
End If
End If
End Select