以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  十万的数据加载半天 [已经初步解决]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=50948)

--  作者:linshibin
--  发布时间:2014/5/15 20:34:00
--  十万的数据加载半天 [已经初步解决]

如果用分页加载权限有很麻烦要写好几道的权限。

如果一次加载,多用几个表达式,一直出不来,要怎么办。真是郁闷啊,数据少的时候系统很不错,一多起来就要吐血了,sql2008的数据库。

难道是权限太复杂的原因,有没有什么可以解决的。

 

注:在登录按钮里面有大量的filter代码,表里面有大量的表达式列

 

清除所有表达式列公式,需要用的时候再重新加载表达式公式,虽然有点麻烦,但是加载速度提升N倍,从之前的直接打不开,到现在只需要三四分钟十万条数据,后期会进一步优化,并把解决方式公布在本帖。

 

感谢狐友的热心,提供各种方法,再次表示由衷感谢。谢谢你们

[此贴子已经被作者于2014-5-16 10:48:35编辑过]

--  作者:狐狸爸爸
--  发布时间:2014/5/15 20:46:00
--  

如果确定是表达式列的影响,可以先关闭表达式,加载完成再开启,参考:

http://www.foxtable.com/help/topics/1935.htm

 


--  作者:linshibin
--  发布时间:2014/5/15 20:47:00
--  
 表达式是直接写在列里面的,如何关闭呢?
--  作者:linshibin
--  发布时间:2014/5/15 20:48:00
--  
要写在哪个位置,后面怎么开启
--  作者:lihe60
--  发布时间:2014/5/15 20:53:00
--  
以下是引用linshibin在2014-5-15 20:34:00的发言:

如果用分页加载权限有很麻烦要写好几道的权限。

如果一次加载,多用几个表达式,一直出不来,要怎么办。真是郁闷啊,数据少的时候系统很不错,一多起来就要吐血了,sql2008的数据库。

难道是权限太复杂的原因,有没有什么可以解决的。

 

注:在登录按钮里面有大量的filter代码,表里面有大量的表达式列

[此贴子已经被作者于2014-5-15 20:39:06编辑过]

不管怎么说,一次加载十万行的数据,思路可以调整。


--  作者:有点甜
--  发布时间:2014/5/15 20:55:00
--  
以下是引用linshibin在2014-5-15 20:48:00的发言:
要写在哪个位置,后面怎么开启

 

做个优化,把表达式列的表达式放到一张表里面。表里面有 表名、列名、表达式。

 

清空全部表达式列的表达式,然后在项目打开之后,比如登陆以后,把表达式设置进去

 

 http://www.foxtable.com/help/topics/1935.htm

 


--  作者:linshibin
--  发布时间:2014/5/15 20:55:00
--  
工作上需要,即使不加载这么多,我后面也用菜单加一个load重新加载13年数据,结果程序直接卡死,半个小时数据还出不来,还吐血
--  作者:狐狸爸爸
--  发布时间:2014/5/15 21:38:00
--  
例如:
 
DataTables("订单").DataCols("金额").Expression = ""
DataTables("订单").DataCols("单价").Expression = ""
DataTables("产品").DataCols("总金额").Expression = ""
加载数据
DataTables("订单").DataCols("单价").Expression = "Parent.单价"
DataTables("订单").DataCols("金额").Expression = "数量 * 单价 * (1 - 折扣)"
DataTables("产品").DataCols("总金额").Expression = "Sum(Child.金额)
 
 

--  作者:有点甜
--  发布时间:2014/5/15 21:47:00
--  
以下是引用linshibin在2014-5-15 20:55:00的发言:
工作上需要,即使不加载这么多,我后面也用菜单加一个load重新加载13年数据,结果程序直接卡死,半个小时数据还出不来,还吐血

 

表达式重复计算了。你看楼上的帮助。

 

加载多数据,参考

 

1、清空表达式,加载完毕再重置;

 

2、暂停事件执行,加载完毕再开启 http://www.foxtable.com/help/topics/2218.htm

 

3、根据实际情况再优化处理


--  作者:linshibin
--  发布时间:2014/5/15 22:37:00
--  

我是在登录窗口里面写的filter每个人加载不同的数据

在项目事件AfterOpenProject中:

Forms("用户登录").Open()
If _UserName = "" Then
    Syscmd.Project.Exit()
    Return \'这个要加上,因为既然要退出,就不应该再执行后面的初始化代码了,否则会出错
End If
 

这个代码我要放哪里呢