在搜索论坛后,我可以找到有几个表和一个表单的多个问题,但是我有反问题。我有四个单独的表单,都链接到同一个表。没有两个表单在表上编辑相同的变量。
如果人们打开一个表单,保存它,关闭它,然后转到数据库按预期工作的下一个表单。但是,有些人打开所有表格,忘记事先保存/关闭。此时,Access拒绝保存文件,表明'另一个用户打开此文件'因为表是以另一种形式打开的,即使变量不应该相互覆盖。
这有什么解决方法吗?我希望让人们能够将输入的数据从多个表单保存到同一个表中。没有时间可以让两个人同时访问这个表,我只想确保如果有人一次打开多个表单就可以保存数据。
答案 0 :(得分:0)
首先,在MS Access数据库中,多个用户可以打开相同的表单。如果用户在同一记录中工作,则会发生唯一的读/写问题。首先输入记录并开始更新的人将对他/她进行记录锁定,之后用户将获得警告消息,直到保存记录(或删除脏事件)。用户可能能够查看但无法编辑。
因此,您的问题可能比编程问题更具可操作性。尝试组织用户在特定时间管理特定记录或协调团队成员之间的添加/更新工作。当然,如果您在拥有数百名用户或在线的大型公司网络上运行,这将是不可能的。
另一个解决方案是将所有单独的表单作为子表单迁移到一个主表单中,以便所有相应的记录同时对齐。但通常,子表单是为连接表而不是相同的表记录源保留的。如果空间有问题,您可以使用选项卡。这并不会阻止记录锁定问题,但至少会降低它的可能性,因为较少的记录分布在不同的对象上。事实上,这可能会更好,因为用户可以来回移动到同一记录的其他变量,以便在一个表单上进行参考,而不是打开/关闭其他表单或保持其他表单打开。
最后,强烈建议在多用户环境中工作,特别是因为您将ODBC连接到MySQL等系统,以便在FrontEnd(链接表,表单,查询,宏, modules)和BackEnd(只有表格)。此设置可防止损坏,有效地运行系统,因为只有数据通过网络而不是整个应用程序项发送,并且总体上可以促进更好的多用户环境。每个用户可以在其本地计算机上拥有FE的副本,但所有用户都将连接到共享网络上的一个BE。为了提供帮助,Access 2007-2013在数据库工具下的功能区上有一个按钮。
答案 1 :(得分:-1)
我使用了一个显示按钮的仪表板来打开所需的表单,然后使用yourform.showdialog()
在C#中打开其他表单。这将使得用户在关闭打开的表单之前不能使用其他表单。
http://msdn.microsoft.com/en-us/library/39wcs2dh(v=vs.110).aspx