| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3622 人关注过本帖, 1 人收藏
标题:今天无意发现解决Grid白屏问题。
只看楼主 加入收藏
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
不是,我的意思是在执行 sqlexec(nhandle,'select * from sql_table','sql_table') 之前

泉城飞狐
2015-12-21 13:02
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用liuxingang28在2015-12-21 13:02:29的发言:

不是,我的意思是在执行 sqlexec(nhandle,'select * from sql_table','sql_table') 之前

我查询回来的结果,不是直接用sql_table表的,因为这个表是不可以修改的,我要转为可以修改的。
比如
THISFORM.Grid1.RECORDSOURCE=NULL  &&加这句?
sqlexec(nhandle,'select * from sql_table','sql_table')
if used("sql_table")
   select * from sql_table into cursor sql_table_tmp READWRITE
   use in sql_table
else
  create cursor sql_table_tmp(bh c(16),.....)
endif
select sql_table_tmp
THISFORM.Grid1.RECORDSOURCE=''  &&难道这句不要?
THISFORM.Grid1.COLUMNCOUNT = -1
THISFORM.Grid1.RECORDSOURCE=ALIAS()
我的GRID数据源,不是直接sql_table,也要先THISFORM.Grid1.RECORDSOURCE=NULL吗?
我这几天,测试,有时候会白屏。有时候不会,不是次次会。。。

[此贴子已经被作者于2015-12-21 13:40编辑过]

2015-12-21 13:31
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
白屏是因为数据源不存在引起的。什么原因会导致数据源不存在呢,通常是数据源表被关闭引起的,如果表格在运行过程中源表被关闭,表格就会“白屏”。除了直接关闭表的use命令外,pack命令也会关闭表。也就是说在表格的运行过程中不能对数据源的表进行pack、use操作,否则就会引起表格的“白屏”。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-12-21 13:46
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用hu9jj在2015-12-21 13:46:39的发言:

白屏是因为数据源不存在引起的。什么原因会导致数据源不存在呢,通常是数据源表被关闭引起的,如果表格在运行过程中源表被关闭,表格就会“白屏”。除了直接关闭表的use命令外,pack命令也会关闭表。也就是说在表格的运行过程中不能对数据源的表进行pack、use操作,否则就会引起表格的“白屏”。

我的白屏出现在下面的情况:
1、我SQL2000不在局域网内的机器上;同1个局域网的机器,“好像”没白屏现象。
2、我是通过向日葵的VPN功能,在家里连接到公司的SQL2000上,测试时,才发现有白屏现象,但不是次次有有白屏。以前测试,用本地的SQL2000不会的。
3、我是在从SQL2000查询数据回来的时候才会白屏,在按“查询数据”按钮后,到数据完全回来的过程中出现白屏,等到数据完全回来了,白屏消失,显示正常。
2015-12-21 13:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
可能与网络数据传送快慢有关,感觉VFP有时刷新显示不是同步,尤其在某些事件中明显感觉有延时。
2015-12-21 16:05
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
用我说的方法应该可以解决你的问题。首次运行查询后,Grid1.RecordSource 被设置为 sql_table_tmp。再次运行时,select * from sql_table into cursor sql_table_tmp READWRITE 会将 sql_table_tmp 覆盖,因此,在运行此语句前应添加 THISFORM.Grid1.RecordSource=NULL。然后在 Select * From ... 之后添加 THISFORM.Grid1.RecordSource="sql_table_tmp"。

泉城飞狐
2015-12-21 16:58
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用liuxingang28在2015-12-21 16:58:57的发言:

用我说的方法应该可以解决你的问题。首次运行查询后,Grid1.RecordSource 被设置为 sql_table_tmp。再次运行时,select * from sql_table into cursor sql_table_tmp READWRITE 会将 sql_table_tmp 覆盖,因此,在运行此语句前应添加 THISFORM.Grid1.RecordSource=NULL。然后在 Select * From ... 之后添加 THISFORM.Grid1.RecordSource="sql_table_tmp"。

好的,我要找个数据量大的,网络慢的时候,才能测试出来。
要是数据量少,网快的时候,就不白屏的,我昨天测试了好几次,都不出现。
2015-12-21 17:16
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
将表格的数据源与查询得到的表分离,即表格的数据源用一个自由表,查询得到数据再更新到自由表中(自由表原有的记录可以通过zap命令清除)。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-12-21 19:17
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用hu9jj在2015-12-21 19:17:09的发言:

将表格的数据源与查询得到的表分离,即表格的数据源用一个自由表,查询得到数据再更新到自由表中(自由表原有的记录可以通过zap命令清除)。

先建立一个临时表?在把查询回来的数据更新到临时表?
create cursor t1(bh c(20),xm c(20)....)
sqlexec(nhandle,'select bh,xm,,,, from sql_table where ....','sql_table')
if used('sql_table')
   select t1
   zap in t1
   append from sql_table &&和append from dbf('sql_table') 有什么不同
   use in sql_table
endif
大概是这样?

[此贴子已经被作者于2015-12-22 15:07编辑过]

2015-12-22 14:06
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
是建立一个自由表,可以通过ZAP来清除原有记录,再将查询到的临时表添加到自由表中,最后刷新表格。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-12-22 22:09
快速回复:今天无意发现解决Grid白屏问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014179 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved