在局域网环境下,如何设置让服务器电脑上某一VFP表单只允许一台电脑打开进行数据编辑?

ZJM4862915 2011-07-15 09:04:25
在局域网环境下,服务器电脑上共享文件夹中的某一VFP表单只允许一台电脑(可以是局域网中的任何电脑)打开进行数据输入与修改。如果该表单已经在一台电脑上打开了并正在进行数据编辑,这时当另一台电脑要打开该表单时,出现提示:“该运行窗口已被其他用户打开使用,不能重复打开。”应如何编程设置达到这一要求?敬向电脑专家请教,不胜感激!
...全文
266 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack_wang0823 2011-07-29
  • 打赏
  • 举报
回复



从程序设计本身来讲, 您这种设计思路 就不妥, 你应该尝试锁定需要保护的表,而不是编辑表的窗口文件。

关于锁定表, 可以参阅 LOCK() 和unlock() 函数
原理是在打开编辑表字段时, 判断是否已经被锁定。 如果没有被锁定 就锁定要修改的记录。 在释放锁定前, 其他用户的锁定函数返回值是.F. , 根据这个值返回出错信息, 如, ‘改表内容正在被其他用户编辑, 等几分钟后再试。


不过使用锁定的方式有个缺点。 就是, 如果一个用户锁定了数据不释放, 其他用户就一直无法操作。

所以尽量不要使用锁定的方法。 我一般是建立字段缓存列表变量, 需要保存是 使用 UPDATA() 或者gath memv 命令, 更新字段。 系统会自动锁定相关 记录。 然后自动释放。 大概几毫秒时间 用户是无法觉察的。。。
faqing 2011-07-29
  • 打赏
  • 举报
回复
还是用事务吧,哪有一个服务器被人独占的呢?
ZJM4862915 2011-07-20
  • 打赏
  • 举报
回复
dfwxj老师:
你介绍的用变量的方法可能不行。因为在局域网中可能不能设置在各个计算机上都可享的公共变量。
dfwxj 2011-07-15
  • 打赏
  • 举报
回复
还可以用一变量

if cflag
messagebox('表单正在使用!')
else
cflag=.t.
打开表单
endi


在表单的unload中:
cflag=.f.
都市夜猫 2011-07-15
  • 打赏
  • 举报
回复
在表单的 init 事件中独占打开共享文件夹内的一任意文件即可。

Init 事件代码:
Thisform.AddProperty('hFile', 0)
Thisform.hFile = Fopen('\\共享将机器名\共享文件夹\aaa.txt', 2)
If Thisform.hFile == -1
Messagebox('该运行窗口已被其他用户打开使用,不能重复打开。', 16, Thisform.Caption)
Return .f.
Endif

Destroy 事件代码:
If Thisform.hFile > 0
Fclose(Thisform.hFile)
Endif

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧