Foxtable(狐表)用户栏目专家坐堂 → [求助]表中用代码写公式后导入数据卡死(运算慢原因)


  共有2975人关注过本帖平板打印复制链接

主题:[求助]表中用代码写公式后导入数据卡死(运算慢原因)

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


加好友 发短信
等级:幼狐 帖子:80 积分:1319 威望:0 精华:0 注册:2013/11/28 19:45:00
[求助]表中用代码写公式后导入数据卡死(运算慢原因)  发帖心情 Post By: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

 


 回到顶部