vfp网络编程
更新时间:2023-11-25 14:53:01 阅读量: 教育文库 文档下载
路径问题的代码为
lcSys16 = SYS(16)
lcjsjname=left(sys(0),(at(\on error llerror=.T. do case
case AT(\
gcdataLj=\ cd &gcdataLj if llerror on error
=MESSAGEBOX(\还没有将应用程序数据所在的目录设置为共享目录。请将它设为共享。(设置时要以原目录名作为共享名,并要允写操作。)\出错提示\ RELEASE ALL EXTENDED CLEAR ALL retu endi
cd \ on error if llerror
=MESSAGEBOX(\还没有将应用程序所在的目录设置为共享目录。为方便其他计算机访问,请将程序所在目录设为共享。(设置时要以原目录名作为共享名,并只能设为只读。)\友情提示\
endi
lcProgram =SUBSTR(lcSys16, AT(\ cd LEFT(lcProgram, RAT(\case AT(\
lcProgram =left(lcSys16, AT(\
lcjsjname =SUBSTR(lcProgram, AT(\ gcdataLj=\ cd &gcdatalj on error if llerror
=MESSAGEBOX(\管理员在程序所在的计算机上对数据所在目录进行共享设置后才能运行该程序。\出错提示\
RELEASE ALL EXTENDED CLEAR ALL retu endi
cd left(lcSys16, AT(\endc
了Visual FoxPro 6.0网络编程中应注意的几个问题。 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=\thisform.grid1.scrollbars=3 thisform.refresh
系统刚开始运行时,由于产品记录个数少并未发现问题,但随着产品的增加,发现进入此表单很慢。通过将SET SAFETY 设置为ON,单步调试,发现上述程序的第一条SELECT语句重复执行若干次。将此段程序移到表单的init事件后,程序执行正常。或者将上段程序该为:
select * from dspbmk into cursor tj thisform.grid1.recordsource=\
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语句,再没出现以上问题。
3、Visual FoxPro 6.0网络程序设计应注意的几个问题
在单用户状态下,数据库的使用没有共享和独占概念,用户可以随意对表进行增、删、改、查等操作,不受任何影响。但是,在网络环境下就不一样,当表被打开时,如果两个用户对一个表同时进行修改、删除等操作,后果将不堪设想。所以在网络环境下表的打开有两种方式:一是共享方式,表示这个表可以被任何用户操作;二是独占方式,表示这个表只能被一个用户操作。例如,对于商场管理系统,由于数据量大,需经常对表进行数据整理(需执行PACK、ZAP等操作),当系统管理员进行数据整理时表必须以独占方式打开;而前台收款和后台操作同时进行时,表必须以共享方式打开。那么如何解决多个用户同时对表操作而不致出现问题呢?下面笔者谈几点体会。
3. 1一般的解决方法
文件或记录的加锁与解锁是网络程序设计中经常用到的方法。VFP提供了FLOCK()、RLOCK()和LOCK()函数对文件和记录进行加锁,一个文件或记录加锁后,只能由加锁用户进行读写,其他用户只能读不能写。当对记录或文件进行修改或删除时,必须加锁。当对文件操作完毕应及时解锁,VFP提供UNLOCK命令对指定工作区解锁。如:
do while !flock()
wait window ‘正在锁定数据库请稍候!’Timeout 0.05
enddo : unlock
当对文件或记录加锁时,若由于某种原因没有锁住,可以再试加锁操作,并可指定加锁次数或试锁的时间。VFP提供了SET REPROCESS TO命令来确定如何控制失败的记录或文件加锁。此外,VFP还提供SET REFRESH TO命令控制多长时间后显示网络中其他用户对记录所做的修改.
3.2慎用VFP的隐含锁定功能
当VFP处于隐含锁定状态(即SET LOCK设置为ON)时,执行某些命令时将自动对表加锁这些命令包括:
AVERAGE、CALCULATE、LIST、DISPLAY、SORT、INDEX、COUNT、TOTAL、SUM、COPY TO、COPY TO ARRAY 、REPORT、JOIN、LABEL。
在网络环境中,必须将SET LOCK设置为OFF,以免影响其他用户的正常使用。例如,一个商场管理系统,后台正在打印商品信息,若SET LOCK设置为ON,则此时商品信息表将加锁,前台销售需对商品信息表的商品库存进行减操作,也需对商品信息表加锁。此时将陷入锁定等待状态,影响前台收款.
3.3使用VFP的多记录锁功能时要及时对记录开锁
Visual FoxPro 6.0将SET MULTILOCKS设置为ON,即设置多记录锁,表示同时对多条记录加锁。对此功能的使用需谨慎,一定要及时开锁,否则容易引起死锁。假定有一个网络版的商场销售系统,许多表单的对表操作采用了表缓冲区状态,由于VFP规定使用缓冲区功能必须将SET MULTILOCKS设置为ON。所以系统运行时是处于多锁状态。前台销货存盘时要对商品信息表(dspbmk.dbf)中的商品库存量进行修改,在存盘按钮的click事件中加入以下程序段:
sele sp /*销售商品清单 go top
do while .not.eof() sele dspbmk seek sp.spbh do while !rlock()
wait window ‘正在锁定数据库请稍候!’Timeout 0.05 enddo
repl kcl with kcl-sp.sl sele sp skip enddo
sele dspbmk
unlock in dspbmk
程序对每个记录修改后并未及时开锁,在全部修改完后才开锁.
假定有甲乙两个收款台,前台甲正在卖编号为1、2、3的商品,前台乙正在卖编号为3、2、1的商品,甲存盘时首先锁定1商品,库存量修改完后记录指针移动,又锁定了2商品的记录,处理完后试图锁定2商品;而前台先锁定了3商品记录,处理完后试图锁定2商品。这时就发生死锁,造成系统瘫痪。纠其原因,主要因为SET MULTILOCKS设置为ON了,而以上程序却未对记录及时开锁。
本文来自:http://www.bianceng.cn/VFPwz/wlkf/wl9.htm
正在阅读:
vfp网络编程11-25
房地产估价实例02-28
国旗下讲话:我爱我的幼儿园09-18
ZD9系列电动转辙机 维护及检修技术要求06-01
2011年安徽省职业院校技能大赛中职组服装设计制作与模特表演技能大赛竞赛规程11-09
(完整word版)统计学常用公式10-03
吊耳局部有限元建模技术分析08-16
竞聘办事员岗演讲稿doc05-02
初二平面直角及一次函数试卷(原创)03-13
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 网络编程
- vfp
- 数据库原理 - 期末试卷及答案
- 深圳市黑弧广告有限公司员工手册
- 丹参
- 镗削的基本加工方法
- 工艺包设计内容和深度规定
- 传染病护理学复习题及答案11
- 四年级语文下册提质减负计划
- 精品2019七年级语文上册第一单元写作热爱生活,热爱写作导学案新人教版
- 食品药品专业实习报告--化验室检测员
- 2018-2019年初中政治湘教版《八年级上》《第四单元 做负责任的公民》《第一节 感受责任》综合测
- 生态学试题库
- 全科医师试卷3
- 刑事诉讼法案例分析题汇总
- 《最终幻想3》中文破解超详细流程攻略
- 《MCS-单片机原理及其应用》课后答案 陪张毅刚 第3版 哈工大板
- 2015-2022年中国祛斑养颜保健品市场分析报告 - 图文
- 2016年辅导员职业技能大赛试题及答案
- 关于紫藤萝与牵牛花的作文
- 2018年鄂尔多斯市小升初数学模拟试题(1)
- 有趣的水管引水 - 虹吸实验