Foxpro 网络版软件初步

发表于:2007-07-02来源:作者:点击数: 标签:
一、原则 网络软件的最重要原则就是不能两个人同时修改一个数据。否则就会造成冲突,不知以谁的修改为准。 二、普通的解决办法 最普通的办法是在要修改数据时将数据表以独占方式打开,所谓“独占”就是使得数据只能自己使用,而别人不能使用,既不能修改,也

一、原则

网络软件的最重要原则就是不能两个人同时修改一个数据。否则就会造成冲突,不知以谁的修改为准。

二、普通的解决办法

最普通的办法是在要修改数据时将数据表以独占方式打开,所谓“独占”就是使得数据只能自己使用,而别人不能使用,既不能修改,也不能查看。独占打开表的命令是在 use 命令中加 exclusive 子句,比如:

use rsda exclusive

这样就不会出现两个人同时修改一个数据的情况了。

三、共享数据

如果您只是查看数据,而不进行修改,那么您应该以共享方式打开表,否则别人也就没办法查看数据了,如果大家都是查看,不会有任何的冲突发生,即使查看的是同一个数据。

共享方式打开表的命令是 use ... share ,比如:

use rsda share

对于数据库也是一样的处理:

open database ... share

独占打开则是:

open database ... exclusive

四、友好的提示

如果您以独占方式打开了表,别人无论用独占或共享方式打开表都会出错,错误是“不能存取文件”,错误代码是1705;另外如果有人以共享方式打开了表,其它人试图以独占方式再打开,也会出现同样的错误。

如果在程序中出现这样的错误,可能使操作者莫名其秒,如果能给出比较友好的提示就好了,方法是用 on error 语句捕捉错误,一旦捕捉到错误即给出一个友好的提示,比如在需要共享打开数据时:

on error err=error()
*上面这条就是捕捉错误的陷井,如在下面任何地方出现错误就将错误代码存入err变量,并不显示错误。
use rsda share &&如果这时出现错误,错误代码就会存入err,并且表不会打开,也不会出现错误提示。
if err=1705 &&如果错误代码是1705
*给出自己的提示
messagebox(@#数据正在被其它人修改,您暂时不能使用,请稍后再试。@#,16,@#注意@#)
endif
on error &&取消捕捉错误

原文转自:http://www.ltesting.net