-- 作者:xiangwei_zeng
-- 发布时间:2015/9/24 11:57:00
-- [求助]表中用代码写公式后导入数据卡死(运算慢原因)
表中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
|
-- 作者:大红袍
-- 发布时间:2015/9/24 12:05:00
--
看代码,是这句代码有问题,输入一列,就重新刷新全部的记录?肯定不对,至少加上条件。
Select Case e.DataCol.Name Case "钣金喷涂工艺数值","焊接点数","焊接段数","单件汇报次数" DataTables("零件工艺").DataCols("工序名称").RaiseDataColChanged() End Select
|
-- 作者:xiangwei_zeng
-- 发布时间:2015/9/24 16:51:00
--
虽然Select Case e.DataCol.Name Case "钣金喷涂工艺数值","焊接点数","焊接段数","单件汇报次数" DataTables("零件工艺").DataCols("工序名称").RaiseDataColChanged() End Select
代码很频繁但重置的地工序名称列不会卡死,但重置钣金喷涂工艺数值就会卡死,现已经上传数据库,请帮助看一下,谢谢!
|