以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 不好意思,程序死机问题,测试了一天,不能解决,来求助。 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=9468) |
||||||||
-- 作者:lihe60 -- 发布时间:2011/4/15 14:45:00 -- 不好意思,程序死机问题,测试了一天,不能解决,来求助。 请先设置好外部数据源 运行“存货报表”的窗口,目标框选择“手册名称”、“批号”和“仓库名称”,都能运行;选择“存货代码”程序就死了。 我从早上到现在一直在调试,都搞不好,还请各位出手。
[此贴子已经被作者于2011-4-15 14:44:48编辑过]
|
||||||||
-- 作者:狐狸爸爸 -- 发布时间:2011/4/15 15:06:00 -- 我的过程,先把代码改为:
\'限定试用期 Dim s As String messagebox.show(1) Dim f As New Filler messagebox.show(2) For Each dr0 As DataRow In dt.DataRows
然后执行测试,结果显示到2的时候没有反应,说明问题出在第三段,然后分析第三段代码:
For Each dr0 As DataRow In dt.DataRows
可以看出,你遍历了dt中的所有行,而且每行都执行一次fill, 这是一个非常低效的设计,Fill加载一个表,当你选择存货代码时,dt表中的数据有13000多行,要执行fill方法13000多次,等于是加载13000多个表,平时的系统有几十个表,打开项目都很慢,而你执行一次操作等于要加载13000个表,慢是非常正常的。 |
||||||||
-- 作者:lihe60 -- 发布时间:2011/4/15 15:16:00 -- 慢是可以理解的,但死程序就不能理解了。 |
||||||||
-- 作者:狐狸爸爸 -- 发布时间:2011/4/15 15:34:00 -- 哈哈,不是死,是慢,一直在高速运行,没有办法做出相应,你等24小时可能会ok.
|
||||||||
-- 作者:lihe60 -- 发布时间:2011/4/15 16:11:00 -- 如果按“手册名称”、“存货代码”为分组列,“期初数量”、“入库数量”、“出库数量”和“期末数量”为统计列,如何写代码,速度可以容忍的? |
||||||||
-- 作者:狐狸爸爸 -- 发布时间:2011/4/15 16:20:00 -- 因为此时行数不多。 |
||||||||
-- 作者:lihe60 -- 发布时间:2011/4/15 16:32:00 -- 以下是引用lihe60在2011-4-15 16:11:00的发言:
如果按“手册名称”、“存货代码”为分组列,“期初数量”、“入库数量”、“出库数量”和“期末数量”为统计列,如何写代码,速度可以容忍的? 但是,有这个需求!
现在有上万种产品,总不能让领导少发明些产品品种!!! [此贴子已经被作者于2011-4-15 16:33:54编辑过]
|
||||||||
-- 作者:lihe60 -- 发布时间:2011/4/15 16:35:00 -- 以下是引用狐狸爸爸在2011-4-15 15:34:00的发言:
哈哈,不是死,是慢,一直在高速运行,没有办法做出相应,你等24小时可能会ok.
如果让领导等24个小时,软件就会被否掉的。 |
||||||||
-- 作者:狐狸爸爸 -- 发布时间:2011/4/15 16:36:00 -- 呵呵,既然事实和理论已经证明这个设计不行,你就调整思路啊。 FoxTable自身的统计速度,不也曾经有过上千倍的提升吗,设计嘛,就得不断地摸索调整。 [此贴子已经被作者于2011-4-15 16:38:45编辑过]
|
||||||||
-- 作者:lihe60 -- 发布时间:2011/4/15 16:39:00 -- 按“手册名称”、“存货代码”为分组列,“期初数量”、“入库数量”、“出库数量”和“期末数量”为统计列
我今天想了一整天,想破了脑袋,也没有想出来。还要贺老师出马。 [此贴子已经被作者于2011-4-15 16:55:48编辑过]
|