以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]计算代码转换过程中出现问题!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=1359)

--  作者:t_fs
--  发布时间:2008/12/10 9:16:00
--  [求助]计算代码转换过程中出现问题!
     为了适应新版本的狐表系统,本人将已测试没有问题的汇总计算表中的“计算代码”逐步向表属性中转换。发现了一个问题!
     即仅提取“一车间_车数”时尚无问题出现。当再加入一个提取字段如“一车间_毛重”时,则会产生无提示而自动关闭文件退出狐表的现象。
     请狐爸看看,是什么原因?谢谢!!
文件如下:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:矿石汇总00_1210.zip

[此贴子已经被作者于2008-12-10 9:20:20编辑过]

--  作者:狐狸爸爸
--  发布时间:2008/12/10 10:51:00
--  

没有明白你的意思。
其实没有什么特别的,只需将DatacolChanged改为:

Select Case e.DataCol.Name
    Case "A","B"
        原计算代码1
    Case "D","E"
        原计算代码2
End Select

[此贴子已经被作者于2008-12-10 10:51:43编辑过]

--  作者:t_fs
--  发布时间:2008/12/10 11:20:00
--  
     我就是按说明改的,只是改了第一列代码后还可正常运行,可是若改了第二列后,系统就会莫名其妙的退出系统。
不能正常计算 。请看上传的文件中的DataColChanged事件代码,将第二行或第三行的行头的“\'”去掉后,点击按扭开始汇总。就会发现退出系统而不能计算。
--  作者:狐狸爸爸
--  发布时间:2008/12/10 11:58:00
--  
呵呵,老兄你应该看一下帮助才开始改啊。
错误提示,出现死循环,你直接将计算代码移到DataColChanged事件中,任何一列的变化都会触发此事件,然后此事件又导致其他列发生变化,如此循环,自然出错。
最好这样改一下:

If e.DataCol.Name = "日期" Orlse e.DataCol.Name = "矿点" Then

    Select Case vars("HZ")

        Case 1 \'按日期汇总按扭

            e.DataRow("一车间_车数") = DataTables("明细表").Compute("sum(车数)", "[日期] = \'" & e.Datarow("日期") & "\' and [车间] = \'一车间\'")

            e.DataRow("一车间_毛重") = DataTables("明细表").Compute("sum(毛重)", "[日期] = \'" & e.Datarow("日期") & "\' and [车间] = \'一车间\'")

            e.DataRow("一车间_净重") = DataTables("明细表").Compute("sum(扣杂)", "[日期] = \'" & e.Datarow("日期") & "\' and [车间] = \'一车间\'")

 

        Case 2  \'按全部矿点分日期汇总按扭

            e.DataRow("一车间_车数") = DataTables("明细表").Compute("sum(车数)", "[矿点] = \'" & e.Datarow("矿点") & "\' and [车间] = \'一车间\'and  [日期] >= \'" & vars("date0") & "\' and [日期] <= \'"& vars("date1") & "\' ")

            e.DataRow("一车间_毛重") = DataTables("明细表").Compute("sum(毛重)", "[矿点] = \'" & e.Datarow("矿点") & "\' and [车间] = \'一车间\'  and  [日期] >= \'" & vars("date0") & "\' and [日期] <= \'"& vars("date1") & "\' ")

            e.DataRow("一车间_净重") = DataTables("明细表").Compute("sum(扣杂)", "[矿点] = \'" & e.Datarow("矿点") & "\' and [车间] = \'一车间\' and  [日期] >= \'" & vars("date0") & "\' and [日期] <= \'"& vars("date1") & "\' ")

    End Select

End If




[此贴子已经被作者于2008-12-10 12:00:24编辑过]