【问题标题】:MS Access Multi User Selecting Different Records ConcurrentlyMS Access 多用户同时选择不同的记录
【发布时间】:2013-02-18 19:31:11
【问题描述】:

在我们的多用户访问环境中,有时需要对一组记录执行不同的操作。例如,在 Orders 表中,用户可能想要删除一组订单,或者打印出一组记录等。为此,在 Orders 表中,我创建了一个名为 aSelect 的布尔字段(“a " 是为了避免 "Select" SQL 保留关键字)。在订单表单上,用户可以通过单击 aSelect 字段的复选框,然后单击“打印”、“删除”或任何其他操作来检查他们想要处理的订单。然后表单后面的代码说要处理所有订单的操作 WHERE ASELECT=TRUE

问题是,(虽然它还没有发生),aSelect 复选框绑定到表中的基础字段,并且两个用户可以同时更改 aSelect。因此,假设用户 A 选择要删除的两条记录,但在他点击删除按钮之前,另一个尝试打印 100 条记录的用户选择了 100 条记录。结果将是所有 100 条记录都将被删除,而不是预期的结果。

任何解决方案或替代方案?这种情况在整个数据库中多次出现。 Orders 表只是一个例子。

谢谢,

【问题讨论】:

  • 用户 id 而不是/以及勾号怎么样?然后您可以通知用户 A 用户 B 正在尝试删除他们的打印集。顺便说一句,我几乎从不允许删除,只删除标志。或者,将前端的标志信息保存在一个小表格中。
  • @Remou,我希望有一个更精简的解决方案。一个小的前端表是一种痛苦,尤其是对于多个场景。谢谢,
  • 那么你希望得到什么?
  • 也许 Access 是一个错误的工具,但我知道在 ADO.NET 中它是一个断开连接的模型。或许在 Access 中也有类似的东西,其中每个用户都可以查看他自己的“版本”后端表,而无需更新对“真实”后端表的更改,也不必创建单独的临时表。我希望这是有道理的。
  • 当然,您可以断开数据连接,但如果没有对真实数据执行删除,您如何看待这些删除工作?您希望用户多久知道有更多(或更少)可用的真实数据?

标签: sql ms-access concurrency


【解决方案1】:

创建一个包含 username/userid 列和 OrderID 列的表。

当用户进行选择时,使用 OrderID 和用户名向该表添加一条记录,然后在运行查询时加入该选择表或使用 IN() 子句并按用户名过滤。

瞧 - 用户特定的选择,可以改进/扩展,但这是我的基本产品。

【讨论】:

  • 如此出色,却又如此简单。为什么我没有想到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多