在MSAccess中使用VBA (ADODB)将数据从远程DB附加到本地表,远程DB中没有锁定记录.< / h1



我要做的是将我现有的MS Access应用程序分离为前端(将在用户的机器上本地运行)和后端(将托管在网络文件服务器上),并允许用户选择"只读"one_answers"写"模式。其思想是一次只有一个用户可以使用"写"模式,从而防止将相同的库存分配给多个客户。我的问题是,应用程序目前通过要求用户打开.bat文件来处理并发性,该文件只允许他们在.ldb文件不存在的情况下进入应用程序(目前没有只读模式),所以我需要防止用户以"只读"模式访问生产数据,以创建.ldb文件,不必要地阻止其他用户。

实现这一点的最大挑战是用户必须对本地安装的MS access (.mdb)文件中的临时表具有写访问权限。我曾尝试使用链接表来实现此功能,但我不确定如何控制使用链接表(创建.ldb文件)锁定记录。

您可以将共享设置更改回独占模式。然后一次只有一个人可以访问该文件。点击这个链接和其他分享选项。

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

边注:哎呀。在共享网络环境中使用Access并不好玩。我希望这个文件里没有什么重要/敏感/安全的东西。在这种情况下,.ldb文件未被删除并阻止其他用户是我经常看到的情况。我认为像您所做的那样将Access文件拆分为前端和后端是第一步。然后使用SQL Server数据库的链接表可以帮助解决这些问题。但是,如果您要达到这种程度的努力,您可能想要考虑抛弃Access并获得COTS产品或创建一个新的应用程序。

根据您使用的Access版本,UI开发具有很大的灵活性。换句话说,这听起来更像是"接口"问题,而不是"数据库"问题。假设每个人都可以写一个表,你应该能够在某种程度上实时检查(性能可能是一个大数据集的问题),是否有一个特定的已添加到库存或不。

他们我处理这个问题是有两个表,一个进站和出站日志,并建立了一个查询,对库存清单上的产品数量进行数学计算。像总账一样,选择一段时间来"关闭日志"(每月,每季度),这样查询就不会考虑到两年前发生的事情。

如果你需要更多的帮助与访问相关的东西,访问怪物是一个很好的论坛网站,处理除了访问。

我的问题是应用程序目前通过要求用户打开一个.bat文件来处理并发性,该文件只允许他们在.ldb文件不存在的情况下进入应用程序(目前没有只读模式),所以我需要防止用户以"只读"模式访问生产数据创建.ldb文件并不必要地阻止其他用户。

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

我想这将是更容易给每个人写访问后端和管理实际写入编程与"锁定用户X"字段后端:

你说:

防止同一件库存被分配给多个客户

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

  2. 如果库存件不是唯一的问题,所有其他用户真的不允许改变任何只要其他人已经在编辑,您就可以创建一个只有一列和一行的新表,并将其用作"locked by User X"字段。只要有一个用户名在里面,你就可以把其他所有人都设置为只读模式。

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

最新更新