Foxtable(狐表)用户栏目专家坐堂 → 求助:打开窗体效率慢有什么更好的优化方法?(已解决)


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

主题:求助:打开窗体效率慢有什么更好的优化方法?(已解决)

帅哥哟,离线,有人找我吗?
e-png
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2013/11/15 19:12:00 [只看该作者]

楼主要把查询的近70万行数据都分页显示, 这不慢才怪呢.  其实这样的分页也没有什么实际意义. 

 

多数情况下是查询某类的数据,再做分页显示. 看看我用你的access数据源的这个例子,应该是飞快的::::::::::

  

数据原路径请重新设置一下...

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:按id加载.table

[此贴子已经被作者于2013-11-15 19:15:23编辑过]

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


加好友 发短信
等级:三尾狐 帖子:715 积分:8574 威望:0 精华:0 注册:2011/11/13 15:49:00
  发帖心情 Post By:2013/11/15 19:16:00 [只看该作者]

以下是引用不倒的翁在2013-11-15 17:43:00的发言:
 楼主碰到的问题和我昨天碰到的问题差不多,这个问题我前前后后各种方法搞了2天了。
复杂的多表分页加载,今天测试了另外一个自己认为比较简单的方法,FILL你要的数据到窗口表中,然后用DataTable的分页加载方法可以加载,就是页数不要对总页数做判断,直接LoadPage - 1 这样加载页面,需要总加载页数的话在Select语句中对你加载的Select做Count统计条目,然后Math计算总页码,用个全局变量来储存总页码供其他地方调用。
多表复杂的Select语句加载的数据DataTable的TotalPages属性会出问题,可能Fox对复杂多表的页数统计代码有问题,狐爸是否能改善下。
http://www.foxtable.com/help/topics/2721.htm 这个的方法虽然也能用,但对页码的控制和Select语句的复杂程度增加了许多,没有DataTable的LoadPage分页加载方法来的简单。

帮我做一下实例,好不,我对狐表刚接触,客户等着我解决方法,我晕哦.


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


加好友 发短信
等级:三尾狐 帖子:715 积分:8574 威望:0 精华:0 注册:2011/11/13 15:49:00
  发帖心情 Post By:2013/11/15 20:36:00 [只看该作者]

以下是引用e-png在2013-11-15 19:12:00的发言:

楼主要把查询的近70万行数据都分页显示, 这不慢才怪呢.  其实这样的分页也没有什么实际意义. 

 

多数情况下是查询某类的数据,再做分页显示. 看看我用你的access数据源的这个例子,应该是飞快的::::::::::

  

数据原路径请重新设置一下...

 下载信息  [文件大小:288.0 KB  下载次数:3]
图片点击可在新窗口打开查看点击浏览该文件:按id加载.table

[此贴子已经被作者于2013-11-15 19:15:23编辑过]

 "多数情况下是查询某类的数据,再做分页显示"  ,  实际上我就是想能快速打开窗口,然后按条件查询,找到我要的结果,至于分不分页,我都没关系.因为我真正处理的数据是不多的.现在是卡在进入窗口要等待.
你这个例子,打开窗口是很快,但是按高级过滤条件进行查询数据,也是只能找到当前加载的第一页数据,其他的也找不到.

[此贴子已经被作者于2013-11-15 20:36:54编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/11/15 20:39:00 [只看该作者]

 回复楼主。

1、你要分清筛选和加载的定义,筛选,只能筛选加载进来的数据。也就是,你无法用系统的高级筛选去查询数据库里所有的数据。

     如果你要实现查询功能,只能自己拼凑sql语句。

 2、分页可以做到的。参考下面的代码

Select top 20 * from 
(Select b.id, 生产单号,A.数量 As 订单数量,物料编码,B.数量 As 领料数量,A.MODID As MODID FROM {表1} A INNER JOIN {表3} B ON A.MODID=B.MODID) as tb1 
  where tb1.id > (select top 1 max(id) from (Select top 80 id from 
(Select d.id FROM {表1} c INNER JOIN {表3} d ON c.MODID=d.MODID))) 
order by tb1.id




 回到顶部
总数 24 上一页 1 2 3