标题:请教VFP计算器问题
只看楼主
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
保存命令按钮的CLICK()程序为
APPEND BLANK
REPLACE 员工号 WITH THISFORM.TEXT1.VALUE;
部门号 WITH THISFORM.TEXT2.VALUE;
姓名 WITH THISFORM.TEXT3.VALUE;
性别 WITH THISFORM.TEXT4.VALUE;
工作职务 WITH THISFORM.TEXT5.VALUE;
年龄 WITH THISFORM.TEXT6.VALUE


感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-05-19 21:36
freeaxia
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-18
得分:0 
刚那才这题,
要求输入时,性别必须填写男或女,填写错误时提示“性别应男或女”,默认值为“男”;年龄大于18岁,小于60岁,填写年龄不在范围内提示“年龄应大于18岁或小于60岁”。
可不可以在职工表格那里输入记录数据的时候去限定他?
我直接修改表格的时候,是没办法限制这两个的
2006-05-19 22:11
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
你这个问题我还没有想好,不过一个不太成熟的快速实现途径就是在表格(GRID1)的BEFOREROWCOLCHANGE过程中输入如下程序

FN=FIELD(nColIndex)
DO CASE
CASE FN="性别"
IF 性别="男" OR 性别="女"
ELSE
REPLACE 性别 WITH "男"
MESSAGEBOX("性别为男女")
ENDIF
CASE FN="年龄"
IF 年龄>=18 AND 年龄<=60
ELSE
REPLACE 年龄 WITH 18
MESSAGEBOX("年龄18-60")
ENDIF
ENDCASE

可以部分实现,但效果不明显。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-05-19 22:33
freeaxia
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-18
得分:0 
刚才做的表单里没有表格GRID1呀
2006-05-19 22:49
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
可以在文本框里限制,也可以设计表的时候就限制

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-05-19 22:56
freeaxia
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-18
得分:0 
能否说清楚点,设计表的时候怎么限制,我想知道这个?
2006-05-19 23:00
freeaxia
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-18
得分:0 
(1)"向前(P)"命令按钮的CLICK()
IF RECNO()=1
GO BOTTOM
ELSE
SKIP IIF(RECCOUNT()<=1,0,-1)
ENDIF
THISFORM.REFRESH

这句什么意思?IIF(RECCOUNT()<=1,0,-1)
2006-05-19 23:05
freeaxia
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-18
得分:0 
还有几个问题
form的init event 和 refresh是什么意思,什么作用?
text的valid的作用是?
2006-05-19 23:11
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
(1)设计表的时候,必须是先设计一个数据库,然后添加表,这个时候就出现可以叫你填写"字段有限性"的"规则","信息"和"默认值"的地方.这个时候你可以任意设计要输入的限制条件。

(2)IIF(RECCOUNT()<=1,0,-1)什么意思
其实你和前面的语句联系起来看,就能知道。

IF RECNO()=1
GO BOTTOM
ELSE
SKIP IIF(RECCOUNT()<=1,0,-1)
ENDIF
THISFORM.REFRESH

当当前记录指针已经指向第一条记录(RECNO()=1)的时候还要按"向前",按你的意思就要转入最后一条记录,因此只能是GO BOTTOM,将记录指针指向表的最后一条记录.

当当前记录指针指向别的记录号时候,你还必须注意当前表中总记录数是0还是大于0。若总记录数是0,则向前、向后等用GOTO命令都错误,于是我改用GOTO命令和SKIP命令联合起来使用。

当总记录数为0或为1时,当前记录号必定是1,这时候要求向前,指针是不能动的.于是使用SKIP 0;当总记录数为大于1的时候,当前记录号为2,3,...,于是在当前记录号的基础上,使用SKIP -1就正好使记录向前移动了一条,实现"向前"的要求。

不知道解释清楚了没有。希望你自己多看点书,明天考试顺利!

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-05-19 23:27
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
以下是引用freeaxia在2006-5-19 23:11:00的发言:
还有几个问题
form的init event 和 refresh是什么意思,什么作用?
text的valid的作用是?

上述问题你可以在新建表单的时候打开"属性"对话框的"方法程序"可以得到详细的解释.


感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-05-19 23:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-65393-1-1.html




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

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