主题:一个TEXT的 vaild代码,不知道为何执行后,grid都变空白了?
琅拿度
[专家分:2820] 发布于 2010-04-12 11:44:00
If Int(Val(Allt(This.Value)))=0
This.Value='1'
Endi
一个TEXT的 vaild代码,不知道为何执行后,grid都变空白了?
回复列表 (共16个回复)
沙发
Gleam [专家分:3100] 发布于 2010-04-12 11:50:00
加上表单刷新看看 。
If Int(Val(Allt(This.Value)))=0
This.Value='1'
Endif
thisform.refresh()
板凳
琅拿度 [专家分:2820] 发布于 2010-04-12 12:07:00
不行的。应该是表关闭了
会一直提示我打开表,不知道为何会关闭我的表?
3 楼
deadfoxer [专家分:300] 发布于 2010-04-12 12:35:00
If Int(Val(Allt(This.Value)))=0
This.Value='1'
Endi
楼主注意,你的句子改变了原有数据的类型,这在grid表的text里边可能产生问题,grid表有没有和数据据关联,数据表中列的数据类型可是不能随变更改的.
4 楼
琅拿度 [专家分:2820] 发布于 2010-04-12 13:39:00
deadfoxer,你好
这个TEXT 和 GRID、表都没有任何关系啊,奇怪了
5 楼
琅拿度 [专家分:2820] 发布于 2010-04-12 13:51:00
的确是类型的问题:
If This.Value<1
This.Value=1
Endi
就好了。
但问题是它不按规矩出牌,不提示错误,且和GRID没有联系。怪了
6 楼
moz [专家分:37620] 发布于 2010-04-12 15:44:00
.valid是用来检查text的值的有效性的。
像你这样的代码,先检查一次有效性,然后你又修改了一次text的值,VFP只好再一次执行.valid
所以要仔细谨慎,以免发生死循环。
至于类型错误以致其他奇怪现象的发生,我是习惯了。
就像开车一样,小心一点就是了,你无法预料会有谁瞄准了你。
因为环境已经不再单纯。
7 楼
jianzho [专家分:7560] 发布于 2010-04-12 17:32:00
应该是与grid 连接的表被关闭了,在关闭数据表之前先断开连接
thisform.grid1.recordsource=''
重新打开表后再连接
thisform.grid1.recordsource='mydbf'
8 楼
deadfoxer [专家分:300] 发布于 2010-04-12 18:34:00
楼上说得差不多,再添上下一句看看:
this.parent.parent.init
就是再运行一次grid表的init事件
9 楼
GEORGECHIN [专家分:440] 发布于 2010-04-13 08:18:00
表格被反白,两种可能,一种是因为出错将表关闭,一种是当前工作区的改变.你可以在TEXT的waild中加一条测试语句来查代码是否已经执行完成.或用SELE(0)来返回一下当前工作区.
10 楼
北京惬意 [专家分:1330] 发布于 2010-04-13 09:24:00
琅拿度老弟你好:
你出现的的情况应该属于特例,无法解释,只能回避。
VFP有一些语句也是用数据表工作的,有时在一些特定条件下就会出现这种现象。
本人遇到比较多的是 WAIT 语句,早年经常用它写断点观察程序运行情况,后来发现它经常干那种坏事,再就不敢用了,以至于都已经把 WAIT 这个命令给忘掉了,刚才是为了回这一帖从命令集里现翻出来的。用到提示或断点时都是用 =MESSAGEBOX() ,这个函数从来不干那种坏事。
仅供参考。
我来回复