网站公告列表     爱师软件改版了...  [admin  2008年6月25日]        
加入收藏
设为首页
联系站长
您现在的位置: 爱师软件 >> 文章中心 >> VFP 程序设计 >> 正文
  Visual FoxPro 6.0网络程序设计应注意的几个问题           ★★★ 【字体:
Visual FoxPro 6.0网络程序设计应注意的几个问题
作者:佚名    文章来源:web    点击数:    更新时间:2008-6-27    

Visual FoxPro 6.0网络程序设计应注意的几个问题

  在单用户状态下,数据库的使用没有共享和独占概念,用户可以随意对表进行增、删、改、查等操作,不受任何影响。但是,在网络环境下就不一样,当表被打开时,如果两个用户对一个表同时进行修改、删除等操作,后果将不堪设想。所以在网络环境下表的打开有两种方式:一是共享方式,表示这个表可以被任何用户操作;二是独占方式,表示这个表只能被一个用户操作。例如,对于商场管理系统,由于数据量大,需经常对表进行数据整理(需执行PACK、ZAP等操作),当系统管理员进行数据整理时表必须以独占方式打开;而前台收款和后台操作同时进行时,表必须以共享方式打开。那么如何解决多个用户同时对表操作而不致出现问题呢?下面笔者谈几点体会。

  一般的解决方法

  文件或记录的加锁与解锁是网络程序设计中经常用到的方法。VFP提供了FLOCK()、RLOCK()和LOCK()函数对文件和记录进行加锁,一个文件或记录加锁后,只能由加锁用户进行读写,其他用户只能读不能写。当对记录或文件进行修改或删除时,必须加锁。当对文件操作完毕应及时解锁,VFP提供UNLOCK命令对指定工作区解锁。如:

do while !flock()
wait window '正在锁定数据库请稍候!' Timeout 0.05
enddo

unlock

  当对文件或记录加锁时,若由于某种原因没有锁住,可以再试加锁操作,并可指定加锁次数或试锁的时间。VFP提供了SET REPROCESS TO命令来确定如何控制失败的记录或文件加锁。此外,VFP还提供SET REFRESH TO命令控制多长时间后显示网络中其他用户对记录所做的修改。

  慎用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,则此时商品信息表将加锁,前台销售需对商品信息表的商品库存进行减操作,也需对商品信息表加锁。此时将陷入锁定等待状态,影响前台收款。

  使用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了,而以上程序却未对记录及时开锁。

 

文章录入:admin710925    责任编辑:admin710925 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    帮助文档的制作
    如何检查表格中记录的修改并
    VFP中与相片处理相关代码
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    滇ICP备05001862号 爱师软件 站长:尹红泽