注册 登录
编程论坛 VFP论坛

关于VF字段属性有效性规则的问题?

fatsoliu 发布于 2023-10-12 05:37, 644 次点击
各位大佬,兄弟在用VFP6时遇到了这样一个问题。
我要设置字段的有效性规则,我想让学号这个字段长度不能超过6个字符,设置字段有效性的时候用的LEN(学号)>6表达式,可为什么当我在数据录入的时候学号已经超过了6个字符,没有任何的提示,并且还能继续输入完成?
有没有大佬们遇到过这样的问题,是什么原因产生的这个问题?怎么解决?
只有本站会员才能查看附件,请 登录
14 回复
#2
吹水佬2023-10-12 07:41
=6、<6 也试试看
#3
吹水佬2023-10-12 07:43
或者直接观察一下LEN(学号)的值
#4
gs25367856782023-10-12 08:16
我想你说的规则,就当是VFP的数据库里的表,不是自由表。
#5
fatsoliu2023-10-12 08:30
回复 4楼 gs2536785678
建的就是数据库表,没建自由表。
#6
fatsoliu2023-10-12 08:31
以下是引用吹水佬在2023-10-12 07:43:35的发言:

或者直接观察一下LEN(学号)的值

只有本站会员才能查看附件,请 登录
#7
fatsoliu2023-10-12 08:36
以下是引用吹水佬在2023-10-12 07:41:44的发言:

=6、<6 也试试看


这些都试过,都不好用,但是如果改几次这个条件的时候,可能会有效果,还不让你改变规则,它一但触发规则的时候,就不让你存盘了。非常诡异的问题。
#8
laowan0012023-10-12 08:47
如果界面输入时用的是grid,则可以通过字段的inputmusk='999999'来控制输入的长度
#9
fyyylyl2023-10-12 10:00
len(alltrim(学号))>6?
#10
fatsoliu2023-10-12 19:12
以下是引用fyyylyl在2023-10-12 10:00:53的发言:

len(alltrim(学号))>6?


这个表达式有时候可以用,但是是偶发性的,不是每次都好用。也就是说我修改了N次规则表达式之后,上边的表达式会突然可用了,但也只是检测出表中数据有大于6个字符的问题,并且这个表达式好用之后就没有办法保存表结构了,陷入一个BUG中。
另外如果我输入的学号已经大于6个字符了,那ALLTRIM函数没有意义了。去不去掉空格都是大于6个字符了,为什么要多用一个函数?
#11
fatsoliu2023-10-12 19:14
以下是引用laowan001在2023-10-12 08:47:46的发言:

如果界面输入时用的是grid,则可以通过字段的inputmusk='999999'来控制输入的长度


现在的问题不是控制字符长度的问题,是为什么规则不起作用,按理说它应该弹出对话框告知我信息,但是它什么反应都没有,这是问题啊?
#12
csyx2023-10-12 23:40
你这思维逻辑异于常人啊
按照你一楼的描述,规则显然应该是 len(allt(学号))<=6 嘛
再说了,有必要为这目的设置规则吗,字段长度设置为 6 不就完了?

[此贴子已经被作者于2023-10-12 23:46编辑过]

#13
fatsoliu2023-10-13 04:22
以下是引用csyx在2023-10-12 23:40:42的发言:

你这思维逻辑异于常人啊
按照你一楼的描述,规则显然应该是 len(allt(学号))<=6 嘛
再说了,有必要为这目的设置规则吗,字段长度设置为 6 不就完了?


真的可以用哈,那就是表达式条件为假时,触发控制。这个是我理解上的错误,书上也没说是规则条件为真时触发或是为假时触发,所以造成思维上的混乱。

谢谢大佬

[此贴子已经被作者于2023-10-13 04:29编辑过]

#14
laowan0012023-10-13 07:51
以下是引用fatsoliu在2023-10-12 19:14:32的发言:



现在的问题不是控制字符长度的问题,是为什么规则不起作用,按理说它应该弹出对话框告知我信息,但是它什么反应都没有,这是问题啊?


确实,你是在研究规则为什么不起作用,我用的都是cursor,各种控制是在程序中体现,所以回答的就跑偏了

12楼说的有道理
#15
esailor2023-10-24 11:15
有效,代表是真。
1