Foxpro宏替换的应用.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Foxpro 宏替换的应用 责任编辑:admin   更新日期:2005-8-6 这一章我们来学习 FOXPRO 的一个十分强大而又非常容易掌握的功能: 宏替换 。就从名字上看来这不是个容易对付的家伙,在开始讲 宏替换 之前,让我们先来看一看这样的一个例子: 假设我们有两个表, 1997 级学生成绩表( 1997.DBF )和 1999 级学生成绩表( 1999.DBF )。这时我们要求用户在浏览表之前先输入年份,以便我们来打开用户指定年度的学生成绩表。也许你会说: “ 这太容易了,俺会呀 ” 然后给出下面的方案: 先用一个文本框来接收用户的输入的年份,然后调用下面的代码来打开表: DO CASE CASE THISFORM.TEXT1.VALUE = 1997 USE ‘1997.DBF CASE THISFORM.TEXT2.VALUE = 1999 USE 1999.DBF ENDCASE BROW 不错,您的这段代码表面上是达到了要求。但是它存在着几个问题: 问题 1 :当学生成绩表很少时(如:上例只有 1997.dbf 和 1999.dbf 两个表),用上面的代码可以轻松摆平。但是如果表很多时,假设有十个年度的学生成绩表( 1980.DBF---1990.DBF )。这下惨了,代码就会变成下面的样子: DO CASE CASE THISFORM.TEXT1.VALUE = 1980 USE 1980.DBF CASE THISFORM.TEXT2.VALUE = 1981 USE 1981.DBF CASE THISFORM.TEXT2.VALUE = 1982 USE 1982.DBF CASE THISFORM.TEXT2.VALUE = 1982 USE 1982.DBF …… …… * 为了节省你的网费,我的纸,我就不继续打了,我想您应该明白哪些麻子……代表什么了吧…… ENDCASE 这样一来代码非常的冗长。但这还不是最糟的,更惨的在下面(天啊~~)。 问题 2 :当随着学生的升学,用来保存学生每年学习成绩的表也会动态的增加,这时上面的代码就完全失去了做用。用上面的代码无法预先知道到底会有多少个学生成绩表,也就不可能事先设 N 个 CASE 来判断年份了。 宏替换 :“不要担心,少要害怕,俺 宏替换 来也”。 宏替换 是 FOXPRO 为我们提供的一项强大的功能。它的运算符是“ ”,作用就是提取字符串的现值,返回值是字符串常数。 看到这里您的第一反应可能会是: “WHAT? 什么乱七八糟的,你说的是什么意思? ” 。 别忙,接着往下看您就明白了。下面就让我们用 宏替换 功能来完成上面例子的功能,是又好又省事儿,包您满意。这次假设我们有 20 个表( 1980.DBF 一 2000.DBF )分别存放每一年的学生成绩,放心我们绝对不会用 20 个 CASE 的: C_YEAR = THISFORM.TEXT1.VALUE 用变量 C_YEAR 来接收用户输入的年份。 USE C_YEAR *上面这一句利用宏替换来根据 C_YEAR 的值来找打开对应的表,等价于 *Use ‘1999.dbf,只不过引号的表名是随 C_YEAR 的值而变罢了 BROW 搞定,收工。嘿。。。。。。。。怎么样,是不是又省时又省力呀? 再看下面的例子: a=b b=庄稼 ?a 显示的结果是“b” ?a 显示的结果是“庄稼” 也就是说宏替换将当前变量的值作为真正需要的变量,并返回这个变量的值。 VFP 的很多命令的某些地方不能使用变量,比如上面的 use 命令,你不能写成: a=1997.dbf use a 这样就成了打开 a 这个表,这时就必须用宏替换, use a 类似的还有当 locate for 后面跟的条件不是固定的,你的程序可以允许操作者选择不同的字段来查询,可能是: 姓名=... 也可能是: 电话=... 你不能直接把 for 后面的内容整个作为一个变量,这时宏替换也可以起作用,你可以把条件整个放入一个变量,比如字段名放在一个变量中 zdm,要查的内容放在 nr: tj=zdm++nr+ locate for tj 如果这时 zdm=姓名,nr=庄稼,这就相当于: locate for 姓名=庄稼 那么只要 tj 的内容是个正确的逻辑表达示,不论是什么内容都可以运行,这将给编程带来很大方便。 多学一招 你甚至可以把整条语句放入一个变量: tj=locate for +zdm++nr+ tj 怎么样,酷吧! 注意 值得注意的是, 宏替换 不能递归的引用自已。比如下面的用法就是错误的: S

您可能关注的文档

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档