以下是引用mywisdom88在2015-12-13 13:16:49的发言:
前段时间,用SQL数据库,在本地测试时,表格没有白屏现象,但通过VPN连接到不同局域网的SQL数据库时,由于网速慢,以前的查询用到表格Grid时,发现有白屏现象。
以前是这样查询的,
sqlexec(nhandle,'select * from sql_table','sql_table')
select * from sql_table into curs sql_table_tmp readwrite
use in sql_table
select sql_table_tmp
THISFORM.Grid1.RECORDSOURCE=''
THISFORM.Grid1.COLUMNCOUNT = -1
THISFORM.Grid1.RECORDSOURCE=ALIAS()
当重复按查询按钮时,我发现不在同一个局域网时,在查询回来的数据量很大的时候,会出现表格白屏,
今天无意发现,在查询前,先修改表格的数据源,竟然无意解决了这个白屏问题
把以上语句改为。
**清空表格,同时更换数据源,防止查询过程表格出现白屏,没这段会白屏
select * from sql_table_tmp where .f. into curs sql_table_tmp1
select sql_table_tmp1
THISFORM.Grid1.RECORDSOURCE=''
THISFORM.Grid1.COLUMNCOUNT = -1
THISFORM.Grid1.RECORDSOURCE=ALIAS()
thisform.grid1.Refresh
sqlexec(nhandle,'select * from sql_table','sql_table') &&先查询数据到sql_table,不能写的
select * from sql_table into curs sql_table_tmp readwrite &&把查询数据改为可以写的表去sql_table_tmp
use in sql_table &&关闭临时表
select sql_table_tmp &&表格的数据源sql_table_tmp
THISFORM.Grid1.RECORDSOURCE=''
THISFORM.Grid1.COLUMNCOUNT = -1
THISFORM.Grid1.RECORDSOURCE=ALIAS()
求分享
1、在Grid1的init 中加入
select * from sql_table_tmp where .f. into curs sql_table_tmp1 readwrite
THIS.RECORDSOURCE='sql_table_tmp1'
2、查询时
sqlexec(nhandle,'select * from sql_table','sql_table')
zap in (THISFORM.Grid1.RECORDSOURCE)
select (THISFORM.Grid1.RECORDSOURCE)
APPEND FROM (DBF('sql_table'))
use in sql_table
[此贴子已经被作者于2015-12-16 16:55编辑过]