多用户访问数据库

时间:2016-09-16 08:22:16

标签: ms-access

我有以下情况:

我有很多关系。

例如,员工表,课程表和中间的关系表。

现在我希望用户可以在对话框中选择课程表中的课程。

这意味着对话框中我的连续表单的基础表是课程表。 我想在每一行都有一个复选框,表示是否选择了课程。 正如我所读到的那样,添加一个未绑定的复选框是不可能的,因为它们只是副本,而选择单击将选择所有这些复选框。 解决方案是在基础表课程中添加yes / no字段。

但是在这里我遇到问题,因为我理解这个问题,因为我有几个用户同时使用数据库,如果我点击一个复选框就会更新基础表,这个更新将选择所有用户的值它们同时使用对话框形式,我不想要的。

所以我的问题是,是否有另一种解决方案可以在多用户访问数据库中获得每行的工作复选框。 我能想象出两种解决方案:

1)基础表将是关系表,在此表中,员工和课程之间的每个可能组合将与是/否字段一起保存。 (但这可能是从数据角度来看非常可怕)

2)如果对复选框的更改不会直接写回数据库表,我可以在保存时丢弃它们并手动将关系记录插入关系表中。 (这可能吗?)

感谢任何解决方案提案

3 个答案:

答案 0 :(得分:2)

我看到两种好方法:

1)这假设您的数据库在网络后端中被拆分+每个用户都有一个本地前端。这是多用户的推荐设置。

前端有一个带有Course_ID和是/否列的本地表 此本地表与Course表的连接是连续表单的记录源。

加载时,将课程ID复制到本地表中,并将现有关系设置为True。

保存时,更新关系表。

2)使用ListView控件而不是连续表单。它有内置的复选框。使用VBA循环完成加载和保存。

答案 1 :(得分:0)

根据您的描述,我假设您的表单在其数据源中有一个LEFT / RIGHT JOIN,如果您的关系表中不存在特定的Course / Employee组合,则某些ID字段为null。我们称之为LinkID。然后,您的复选框应该是=NOT ISNULL(LinkID)。虽然您无法使用OnClick事件来检查/取消选中此方式,但您可以使用onMouseDown事件来查看用户是否单击了复选框并相应地执行操作。

这样您就不需要“所有组合”关系表,没有临时表,也没有“是/否”字段。如果存在具有Course / Employee组合的记录,则选中该框,如果该框不存在,则不检查该框。通过添加和删除关系表中的记录来完成添加和删除课程。

答案 2 :(得分:0)

看看这个How to use unbound checkbox in a Continuous Subform - MS Access。绑定未绑定复选框的类。比列表框更好,因为你有一个具有所有好处的表单(排序,过滤,编辑,追加)。