1

我创建了一个数据库/应用程序,单击特定按钮时会在其中创建报告。刚才,两个人竟然同时按下了按钮,引起了各种不好。

有没有办法让一个按钮在被一个人点击后在多个实例中不可见?或者以某种方式锁定数据库,这样在第一个点击的人完成之前什么都做不了?

我有一个解决方案(基本上是一个停止报告创建的全局检查变量),但现在我想知道是否可以完成其他两个选项中的任何一个。

4

2 回答 2

1

在这里了解更多关于你的架构真的很有帮助。什么数据库?你用什么语言写过你的应用程序?并发阅读通常是大多数多用户数据库的一个重要且基本的特性。

借用 Daniel Cook 的一般概念,也许需要解释一下:不要让按钮直接运行报告。让它运行一个小子例程,首先检查一个特殊用途的表,在该表中,您表示报告“运行”,其中包含一条具有开始日期时间和结束日期时间的新记录。如果表中存在没有(空)结束日期的记录,则报告必须仍在运行,因此,不要开始报告,而是关闭按钮。否则,插入同一个表,然后开始运行报表。在该按钮上添加一个定期的、不太频繁的回调来执行相同的检查,你得到了一些接近的东西,但不是“实时的”,但应该在大多数架构中工作(不知道任何关于会话管理功能)。

于 2012-09-17T22:56:23.463 回答
1

这是我所做的:

    If DLookup("PayLock", "table", "pkID=1") Then 'it's locked - exit
        MsgBox "Someone else has already started the pay process.", vbOKOnly
        Exit Sub
    Else
        blah blah blah......

表中的“PayLock”字段包含检查变量。在“Else”之后是单击按钮时要运行的实际代码。

仅供参考,因为他们被问到:

  • 它是拆分数据库
  • 有多个用户
  • 是的,报告只是读取数据并将其导出到 Excel 电子表格中。
看起来这是唯一可行的解​​决方案,但似乎不优雅。我不断发现,解决我缺乏知识的方法是解决问题的实际方法……

于 2012-09-19T15:33:40.937 回答