热情软件屋

 

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回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio