首页 新闻 体育 娱乐 游戏 邮箱 搜索 短信 聊天 点卡 天气 答疑 交友 导航
新浪首页 > 科技时代 > 学园 > 开发者乐园 > 正文

用Visual FoxPro 6.0编程时应注意的问题

http://www.sina.com.cn 2004年04月20日 10:31 天极网

  文/朱爱红

  1引言

  笔者在使用Visual FoxPro 6.0编制超市综合信息管理系统时,由于某些参数的设置不当,或某些命令使用不当,曾走过一些弯路,总结起来体会颇多。

  2 Visual FoxPro 6.0的几个不尽如意的地方

  2.1 Visual FoxPro 6.0的一个bug

  笔者在设计一个产品库存查询表单(form)kccx.scx时,其中一个网格(grid)grid1显示查询内容,运行此表单,因尚未选择查询条件,网格显示所有产品的库存情况。因此,在表单kccx.scx的active事件中加入以下程序,使网格grid1显示表dspbmk(产品库存库)的全部内容:

  select * from dspbmk into table tj

  thisform.grid1.recordsource="tj"

  thisform.grid1.scrollbars=3

  thisform.refresh

  系统刚开始运行时,由于产品记录个数少并未发现问题,但随着产品的增加,发现进入此表单很慢。通过将SET SAFETY设置为ON,单步调试,发现上述程序的第一条SELECT语句重复执行若干次。将此段程序移到表单的init事件后,程序执行正常。或者将上段程序该为:

  select * from dspbmk into cursor tj

  thisform.grid1.recordsource="tj"

  thisform.grid1.scrollbars=3

  thisform.refresh

  程序也执行正常。

  同样,将上段程序放入页框(pageframe)的某一页(page)的active事件中,也会出现同样的问题。笔者并未找到关于此问题解释的相关资料,也许这是Visual FoxPro 6.0的一个bug。

  2.2慎用VFP的缓冲区功能

  Visual FoxPro 6.0提供了缓冲区功能,只要将缓冲区(buffering)状态设为2、3、4、5,那么对表或记录的操作只在缓冲区中进行,再通过tableupdate()函数将修改传送到表中,或通过tablerevert()函数取消对表的修改。VFP的这种功能大大简化了程序的编写。但提醒编程者注意:当使用表缓冲(buffering状态设为5)功能时,若一次修改的记录数太多(比如400条以上),当执行tableupdate()函数对表进行真正修改时,发现缓冲区的数据丢失,本次修改失败。

  2.3多使用FLUSH命令

  假定有一表单,要连续执行若干小时,其中经常要对某个表操作,在表单的load事件中打开此表,此后该表一直处于打开状态,通过APPE、DELE、REPL等操作对表进行了上千条记录的操作,但当退出后有时会发现当天的数据并未保存,尽管VFP帮助文件中介绍5分钟后会自动FLUSH。在每次操作后加入FLUSH语句,再没出现以上问题。

下一页 >>

评论】【应用软件论坛】【推荐】【 】【打印】【关闭
 

 
新 闻 查 询
关键词一
关键词二
 

 发表评论: 匿名发表 新浪会员代号:  密码:
 



科技时代意见反馈留言板 电话:010-82628888-5488   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2004 SINA Inc. All Rights Reserved

版权所有 新浪网