在MS Access中使用VBA(ADODB)将数据从远程数据库附加到本地表,而不使用远程数据库中的锁定记录

时间:2011-12-27 17:42:01

标签: sql ms-access vba adodb

我要做的是将我现有的MS Access应用程序分离到前端(将在用户的计算机上本地运行)和后端(将托管在网络文件服务器上)并允许用户选择在“只读”和“写入”模式之间。这个想法是,一次只有一个用户可以使用“写入”模式,从而防止将同一块库存分配给多个客户。我的问题是应用程序当前通过要求用户打开.bat文件来处理并发,如果.ldb文件尚不存在(当前没有只读模式),只允许他们进入应用程序,所以我需要防止以“只读”模式访问生产数据的用户,无法创建.ldb文件,并且无意中阻止了其他用户。

实现此目标的最大挑战是用户必须具有对本地安装的MS Access(.mdb)文件中的临时表的写访问权。我试图使用链接表来实现它,但我不确定如何使用链接表(创建.ldb文件)锁定记录时。

3 个答案:

答案 0 :(得分:1)

您可以将共享设置更改回独占模式。然后,一次只能有一个人访问该文件。查看此链接以及您拥有的其他共享选项。

http://office.microsoft.com/en-us/access-help/set-options-for-a-shared-access-database-mdb-HP005188297.aspx

旁注:Yikes。在共享网络环境中使用Access并不好玩。我希望这个文件中没有重要/时间敏感/安全。 .ldb文件未被删除并阻止其他用户是我在这种情况下经常看到的事情。我相信将Access文件拆分为前端和后端就像你已经完成的那样是第一步。然后使用链接表到SQL Server数据库可以帮助解决这些问题。但是,如果您正在进行此级别的工作,您可能需要考虑转储Access并获取COTS产品或创建新应用程序。

答案 1 :(得分:0)

根据您使用的Access版本,UI开发中具有很大的灵活性。换句话说,这听起来更像是一个与“数据库”问题相关的“界面”问题。鉴于每个人都能写入表格,您应该能够实时检查(性能可能是较大数据集的问题),无论是否已将特定数据添加到库存中。

他们处理这个问题时,有两个表,一个incomming和传出日志,并设置一个查询,根据产品数量对库存清单进行数学计算。和总分类帐一样,选择设置的时间量来“关闭日志”(每月,每季度),这样查询就不会考虑两年前发生的事情。

如果您需要有关Access相关内容的更多帮助,Access Monster是一个很好的论坛网站,只处理访问权限。

答案 2 :(得分:0)

  

我的问题是应用程序当前通过要求用户打开.bat文件来处理并发性,如果.ldb文件尚不存在(当前没有只读模式),只允许它们进入应用程序,所以我需要阻止用户访问"只读"创建.ldb文件并肆意阻止其他用户的模式。

- >如果每个用户在自己的计算机上都有自己的前端副本,则必须检查后端的.ldb文件。

我想让每个人都能够对后端进行写访问并以编程方式管理实际写入会更容易,用户X锁定#34;后端的字段:

你说:

  

防止将同一块库存分配给多个客户

  1. 如果这是将所有用户只有一个用户置于只读模式的唯一原因,则可以将用户X"锁定。库存表上的字段。如果有人开始修改(甚至打开)一个库存,请用他的用户名更新记录,并在完成后再次删除用户名。
    如果另一个用户也试图打开同一个库存,则第一个用户的名称已经被用户X"锁定。字段,因此您可以将第二个用户置于只读模式。

  2. 如果库存件不是唯一的问题,并且所有其他用户在其他人已经编辑时确实不允许更改任何,则可以创建一个新表只有一列和一行,并将其用作"由用户X"锁定领域。只要内部有用户名,您就可以将其他所有人置于只读模式。

  3. 无论你怎么做,你都必须提供某种管理菜单,所以如果某人的前端在编辑时崩溃,其他人需要能够解锁这个用户的锁定数据(=从&#34删除他的用户名;由用户X"字段锁定)。