Foxtable(狐表)用户栏目专家坐堂 → [求助]计算速度,死机


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

主题:[求助]计算速度,死机

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


加好友 发短信
等级:小狐 帖子:342 积分:3475 威望:0 精华:0 注册:2014/8/20 20:14:00
[求助]计算速度,死机  发帖心情 Post By:2014/9/11 10:50:00 [只看该作者]

我执行下面的代码就死机是什么原因,是不是刷新问题,就像VBA一样要关闭刷新

 

Dim dr As DataRow=e.DataRow

 

Dim tmp As Single  '单精度型 

Dim reg As new System.Text.RegularExpressions.Regex("\[.*\]")

 

'tmp =eval(reg.replace(dr("计算公式_水平"),""),dr)+eval(reg.replace(dr("计算公式_垂直_开关"),""),dr)+eval(reg.replace(dr("计算公式_垂直_配电箱"),""),dr) '计算相加初始数值

 

Select Case  e.DataCol.Name       

               

    Case "楼层_数量","构件_数量"

       

        If dr.IsNull("楼层_数量") OrElse dr.IsNull("构件_数量") Then

            dr("管道合计") = Nothing

           

            dr("定额_电线规格1合计") = Nothing

            dr("定额_电线规格2合计") = Nothing

           

            dr("清单_电线规格1合计") = Nothing

            dr("清单_电线规格2合计") = Nothing

           

        End If

MessageBox.Show(1)

 

       

    Case "规格型号"

       

        dr = DataTables("常用数据").Find("规格型号 = '" & e.DataRow("规格型号") & "'" )

        If dr IsNot Nothing '如果找到, 则设置各列内容

            e.DataRow("规格型号")= dr("规格型号")

            e.DataRow("电线_根数1")= dr("电线_根数1")

            e.DataRow("电线_规格1")= dr("电线_规格1")

           

            e.DataRow("电线_根数2")= dr("电线_根数2")

            e.DataRow("电线_规格2")= dr("电线_规格2")

            e.DataRow("管道规格")= dr("管道规格")

        End If

MessageBox.Show(2)

 

       

    Case "电线_根数1","电线_规格1"

       

        If dr.IsNull("电线_规格1") OrElse dr.IsNull("电线_根数1") Then

           

            dr("定额_电线规格1合计") = Nothing

            dr("清单_电线规格1合计") = Nothing

           

        End If

       

    Case "电线_根数2","电线_规格2"

       

        If dr.IsNull("电线_规格2") OrElse dr.IsNull("电线_根数2") Then

           

            dr("定额_电线规格2合计") = Nothing

            dr("清单_电线规格2合计") = Nothing

           

        End If

       

       

        MessageBox.Show(3)

 

       

    Case "计算公式_水平","计算公式_垂直_开关","计算公式_垂直_配电箱"

       

       

        dr("计算公式_小计") =eval(reg.replace(dr("计算公式_水平"),""),dr)+eval(reg.replace(dr("计算公式_垂直_开关"),""),dr)+eval(reg.replace(dr("计算公式_垂直_配电箱"),""),dr) '计算相加初始数值

MessageBox.Show(4)

 

       

        

       

    Case "特性"

       

        If dr("特性")="线" Or dr("特性")= "线槽"  Then

           

            dr("管道合计") = Nothing

            

        Else

            If dr("特性")="管" Then

               

                tmp =eval(reg.replace(dr("计算公式_水平"),""),dr)+eval(reg.replace(dr("计算公式_垂直_开关"),""),dr)+eval(reg.replace(dr("计算公式_垂直_配电箱"),""),dr)

               

                dr("管道合计") =tmp*dr("构件_数量")*dr("楼层_数量")

               

               

                dr("定额_电线规格1合计") = Nothing

                dr("定额_电线规格2合计") = Nothing

               

                dr("清单_电线规格1合计") = Nothing

                dr("清单_电线规格2合计") = Nothing

               

            End If

        End If

MessageBox.Show(5)

 

       

        '计算结果程序

       

        tmp = dr("计算公式_小计") 'eval(reg.replace(dr("计算公式_水平"),""),dr)+eval(reg.replace(dr("计算公式_垂直_开关"),""),dr)+eval(reg.replace(dr("计算公式_垂直_配电箱"),""),dr)

       

        MessageBox.Show(6)

 

       

        dr("管道合计") =tmp*dr("构件_数量")*dr("楼层_数量")

       

        dr("定额_电线规格1合计") =(tmp+dr("电线预留长度"))*dr("电线_根数1")*dr("构件_数量")*dr("楼层_数量")

        dr("定额_电线规格2合计") =(tmp+dr("电线预留长度"))*dr("电线_根数2")*dr("构件_数量")*dr("楼层_数量")

       

       

        dr("清单_电线规格1合计") =tmp*dr("电线_根数1")*dr("构件_数量")*dr("楼层_数量")

        dr("清单_电线规格2合计") =tmp*dr("电线_根数2")*dr("构件_数量")*dr("楼层_数量")

        MessageBox.Show(7)

 

End Select

[此贴子已经被作者于2014-9-11 10:52:02编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/9/11 10:58:00 [只看该作者]

你代码写在DataColChanged?  死循环了吧

在代码开头和结束,加入暂停事件代码 http://www.foxtable.com/help/topics/2218.htm

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/9/11 11:00:00 [只看该作者]

搞不定的话,就发文件上来,说明目的和任务,以及遇到的问题。

 回到顶部