注册 登录
编程论坛 VB6论坛

2 万行数据,如何显示比较快呢

jofexj 发布于 2014-04-16 09:15, 849 次点击
我读取数据库2万多行数据,显示到MSFlexGrid1中,但是太慢了 如何改进呢?
 With MSFlexGrid1
            Do While Not rs.EOF
                     .AddItem "", 1
                    .ColWidth(0) = 1000
                    .ColWidth(1) = .Width - .ColWidth(0)
                    .Row = 1
                    .Col = 0
                    .CellAlignment = flexAlignCenterCenter

                    '在表中显示
                    .TextMatrix(1, 0) = 1
                    .TextMatrix(1, 1) =  rs(3)
                DoEvents
                rs.MoveNext
            loop
End With
10 回复
#2
lowxiong2014-04-16 09:30
分页显示,所想即所见。
#3
jofexj2014-04-16 09:30
有具体的思路吗
#4
jofexj2014-04-16 09:36
回复 2 楼 lowxiong
有具体的思路吗
#5
风吹过b2014-04-16 10:41
如果不需要编辑,左右不需要滚动条。或者说滚动条不是很多。
那么可以使用 print 命令在 pictrue 上面 直接输出内容的方式来显示数据。

显示部分流程如下:
从第一行的记录号开始,可以 用 数据里的 不重复的关键字来确定,也可以用 记录号来确定。
取一行记录,显示,循环,并且判断 竖坐标。
如果竖坐标超出了显示区域,也就是 超过了 pictrue 的底边,则停止显示。
可能需要你自己找一个能支持 40000+ 的滚动条。VB自带的滚动条,+- 合计是 65000多。超出就会溢出。

代码量比较大,但好处就是 界面可以自定义,显示刷新迅速,响应滚动条速度快。可以增加自定义的特色功能,如选择一行。
---------------
如果不需要编辑,也可以试试 listview 控件。

---------------
再不行,那就只能 使用翻页技术。可以使用 MSFlexGrid1 ,但要自己填数据,不要直接把表绑定进去。
要么使用 内嵌 WEB 方式,到里面 放一个 HTML 页面,从外部或内部进行翻页。
#6
jofexj2014-04-16 11:05
回复 5 楼 风吹过 b
但我数据库 表里的数据时随时更新的(就是其它客户端随时都在往里添加数据)。这个时候我要查询的话,相当于数据也是变动的(我是用Timer控件,1秒1刷新),问题:
1、假如用翻页的话,数据库更新后怎么办呢?
2、数据量比较大的时候,每秒都执行SQl语句,也挺慢的。
#7
vbvcr512014-04-16 11:32
表里面有时间吗,按时间查找数据和记录数,进行显示,不就是实现分页显示了吗?

[ 本帖最后由 vbvcr51 于 2014-4-16 11:47 编辑 ]
#8
alike1232014-04-16 15:35
数据量大的话最好使用datagrid,一般数据使用小需要有特色的时候才用msflexgrid
#9
owenlu19812014-04-16 16:07
2w条的记录有必要实时刷新嘛。。。。。。刷新一次能看到什么?
如果非得要刷新,就循环查询和显示吧
查询->自动分页显示(可设定停留时间)->显示到最后一页再重新查询->再分页显示 (循环)
#10
bczgvip2014-04-16 19:08
显示那么多干嘛咧,就算喜欢拖动滚动条的快○也要看情况吧。
自己搞个分页吧,如一页20条数据什么的。
PS.就让数据呆着吧,咱只显示咱想看到的。
PS2.咱只搞过listbox 的ado数据同步显示,其他的就不清楚了。
#11
vbvcr512014-04-16 20:53
几个版主都出来说话了,头一次碰到。
1