回 帖 发 新 帖 刷新版面

主题:一个TEXT的 vaild代码,不知道为何执行后,grid都变空白了?

If Int(Val(Allt(This.Value)))=0
    This.Value='1'
Endi

一个TEXT的 vaild代码,不知道为何执行后,grid都变空白了?
  

回复列表 (共16个回复)

沙发

加上表单刷新看看 。
If Int(Val(Allt(This.Value)))=0
    This.Value='1'
Endif
thisform.refresh()

板凳

不行的。应该是表关闭了

会一直提示我打开表,不知道为何会关闭我的表?

3 楼

If Int(Val(Allt(This.Value)))=0
    This.Value='1'
Endi

楼主注意,你的句子改变了原有数据的类型,这在grid表的text里边可能产生问题,grid表有没有和数据据关联,数据表中列的数据类型可是不能随变更改的.

4 楼

deadfoxer,你好

这个TEXT 和 GRID、表都没有任何关系啊,奇怪了

5 楼

的确是类型的问题:

If This.Value<1
    This.Value=1
Endi

就好了。

但问题是它不按规矩出牌,不提示错误,且和GRID没有联系。怪了

6 楼

.valid是用来检查text的值的有效性的。

像你这样的代码,先检查一次有效性,然后你又修改了一次text的值,VFP只好再一次执行.valid
所以要仔细谨慎,以免发生死循环。

至于类型错误以致其他奇怪现象的发生,我是习惯了。
就像开车一样,小心一点就是了,你无法预料会有谁瞄准了你。
因为环境已经不再单纯。

7 楼

应该是与grid 连接的表被关闭了,在关闭数据表之前先断开连接

thisform.grid1.recordsource=''

重新打开表后再连接

thisform.grid1.recordsource='mydbf'

8 楼

楼上说得差不多,再添上下一句看看:
this.parent.parent.init
就是再运行一次grid表的init事件

9 楼

表格被反白,两种可能,一种是因为出错将表关闭,一种是当前工作区的改变.你可以在TEXT的waild中加一条测试语句来查代码是否已经执行完成.或用SELE(0)来返回一下当前工作区.

10 楼

琅拿度老弟你好:
    你出现的的情况应该属于特例,无法解释,只能回避。
    VFP有一些语句也是用数据表工作的,有时在一些特定条件下就会出现这种现象。
    本人遇到比较多的是 WAIT 语句,早年经常用它写断点观察程序运行情况,后来发现它经常干那种坏事,再就不敢用了,以至于都已经把 WAIT 这个命令给忘掉了,刚才是为了回这一帖从命令集里现翻出来的。用到提示或断点时都是用 =MESSAGEBOX() ,这个函数从来不干那种坏事。
    仅供参考。

我来回复

您尚未登录,请登录后再回复。点此登录或注册