FoxPro输入数据校验与提示
编号:QA000084
建立日期: 1998年11月8日 最后修改日期:1998年11月22日
所属类别:
周素荣:
我是一个计算机业余爱好者,经常为我服务的公司编一些应用小程序,编程环境为MSOS, FOXPRO25B,我有一个问题一直处理不好,那就是在输入数据时对数据的限制。比如要将一个数据输入一个数据库字段中(简称为输入库),而这个数据只能来源于给定的范围,这些给定范围的数据存放在另一个数据库中,有代码和名称两个字段,简称为代码库.要求用户输入时只输入代码,之后由自定义函数判断用户输入代码的在代码库中是否存在,如存在,则接受输入值,如不存在则提示用户输入错误,并自动弹出一个列表框,列表项来自代码库,由用户任选一项.我处理不好的是字符和列表框中选中的项如何衔接,列表框如何从代码库中取数(两栏)。
在VISUAL FOXPRO5中新增了一组合框的概念,我想应该能园满解决上述问题,但VISUAL FOXPRO5面向对象的编程方式与FOXPRO25差别很大, 我刚入门, 也不知具体如何操作。顺请指教。
回答:
在@...get格式中的valid子句可以判别其输入的有效性。例如添加一个俱乐部1的成员
,此人必须也是俱乐部2的成员。
数据库:dbf1 - 所有俱乐部1的成员
字段:name-成员姓名
数据库:dbf2 - 所有俱乐部2的成员
字段:name-成员姓名
例程如下:
valid = .t.
clos all
use dbf1
append blank
mname = name
clear
@ 10 ,10 say "请输入所加成员姓名:"
@ 11 ,10 get mname valid valid_function()
read
if !valid
@ 10 ,10 say
"刚才输入错误,请选出所加成
员姓名:"
@ 11 ,10 get mname valid valid_function()
copy to array dbf2
@ 11,10 GET dbf2.name ;
PICTURE "@^T" ;
FROM DBF2 ;
SIZE 3,12 ;
DEFAULT 1
GO TOP
READ
MNAME = NAME &&mname 为所选人名
endif
...
function valid_function
sele 0
use dbf2
locate for trim(name) = trim(mname)
valid = found()
return .t.
此问题由gxg回答。
| |
|
|
| |
|
|