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


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

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

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/11/15 8:00:00 [只看该作者]

Tables("窗口1_Table1").Fill("Select * From{表} Where [_Identify] Is Null","数据源","true)


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


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By:2013/11/15 8:11:00 [只看该作者]

不是加载数据的问题,谁都要加载数据,而是你加载数据太多的问题。

 

你一次加载69万行数据,电脑没有崩溃就算不错了,好好看看动态加载、分页加载这些内容:

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

 

提示,SQLTable的Select语句一开始可以这样定义:

 

Select * From {表名} Where [_Identify] Is Null

 

 

这样初始就不加载数据,然后利用分页,例如每页500或1000行,一般不超过1万行

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

 


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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/11/15 8:50:00 [只看该作者]

tables().datatable.loadfilter = "条件"

tables().datatable.load


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


加好友 发短信
等级:六尾狐 帖子:1290 积分:9826 威望:0 精华:0 注册:2012/9/19 21:13:00
  发帖心情 Post By:2013/11/15 12:02:00 [只看该作者]

你把打开窗体时的过滤语句去掉


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


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

我在窗口使用的是表格控件,数据源用的是SQLQuery型,不是SQLTABLE型,因为SQL语句是多个表组合成的一个查询表。

我在窗口打开后的事件,已经定义了该表格的数据源过滤条件为空,看了各位老师的指导,还是有点蒙,确实没有得到要领。

如果在SQL语句中就设置了条件,那我后续按条件过滤不是一样过滤不出来数据了?

我的想法就是:打开窗口不要加载查询表的数据,而是打开后,再根据设定的条件进行过滤查询表。
比如说我这个组合的查询表,有69万的数据,但打开窗口时,是不需要加载的,而是打开窗口后,再根据我输入的条件再进行查询。


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


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

你可以使用加载条件啊, 分页加载也可以根据加载条件分页加载的啊.

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


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

楼主,做个例子给你,看看这个例子中的SQLTable是如何分页加载的,其实和普通的表没有什么差别,例如设计窗口的时候是如何定义SQL语句的,还有窗口的AfterLoad事件中的代码:

 

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


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


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

我按狐爸的例子,改用我的数据做了下,打开窗品是快了,但出现以下问题:
1、只过滤了前20条数据,按下一页、上一页、末页都是无效的。
2、然后点点高级查询,也只能查前20条数据中的内容,其他都查不了。
我把SQL中69万的数据转到ACCESS中,做了个例子,发上来,传了几次传不上来,故传到百度云去了,请狐爸帮我看一下,谢谢。


例子下载地址:http://pan.baidu.com/s/11khxS

对了,这文件不到5M,在这里论坛怎么老上传到一半就断了呢?


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


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

1、这种多表查询,采用另外的方法分页:

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

 

2、筛选只是针对已经加载的数据,你要自己做一个查询窗口,类似这样的:

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

当然这个例子是筛选,而不是加载,你要自己设计代码,根据用户输入的条件,合成Select语句,用SQLLoad来执行

[此贴子已经被作者于2013-11-15 17:14:29编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
不倒的翁
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:476 积分:3523 威望:0 精华:0 注册:2012/12/13 14:23:00
  发帖心情 Post By: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分页加载方法来的简单。

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