1
0
感谢您对情况的澄清。 只读用户可能导致写入用户的更改丢失的想法是不可能的。 也许只读用户实际上不是只读的?如何实现只读与读/写?在我的应用程序中,我可能会将表单默认设置为只读,并为读/写用户将表单上的allowedits/allowditions/allowDeletions设置为true。根据您所说的,我假设您使用的是Jet用户级安全性,很可能默认的管理用户是只读用户,而其他一些用户名是读/写用户。因此,在所有形式中,您都可以在onload事件中执行此操作:
将用户级限制应用于表(仅后端,或后端和前端)也是明智的做法,给予只读的管理用户组和用户用户组,然后给您的一个用户读/写。jet-uls与ntfs安全不同,后者获得的权限最少——在jet-uls中,获得的权限最多,这就是为什么您必须确保管理组和用户组都是只读的(并且不向管理用户特别授予权限,即所有权限都从组成员身份继承)。 当然,我假设这不是通过后端MDB上的NTFS权限尝试的。如果是这样的话,这很可能是一个大问题,而且根本不是正确的方法。从你所说的来看,这似乎不太可能是正在发生的事情,所以我不再谈论它了。 但我首先要看的是,所谓的只读用户是否真的是只读的。 |
2
2
十多年前,在发现和修补书签错误之前,我见过一些类似的东西。在这种情况下,通过书签导航留下一个编辑过的记录会在不引发错误的情况下丢失编辑。 在这种情况下,在MS修补它之前,解决方案是在离开记录之前强制保存:
另一件要检查的事情是错误报告是否打开,以及它如何与VBE错误处理设置交互。如果为了忽略生成的错误而在下一步错误恢复时代码被乱丢,那么需要完全重写代码。它的问题在于,它并不总是如预期的那样超出范围。 下一步,我从不使用错误简历。相反,如果我期望某个特定的错误,但又想忽略它,我会捕获该错误并忽略它,从而允许我没有预料到的任何其他错误不会消失在记忆孔中。 我的想法是某种锁定问题正在生成一个被忽略的错误。因此,在没有人知道的情况下,错误永远不会被报告,更改也会丢失。 另一个需要考虑的问题是后端是否存储在复制驱动器的文件服务器上。对于Access和Jet来说,这是一个不可支持的设置,因为它完全杀死了Jet/Ace的所有记录锁定和内部事务,因为文件图像处于流动状态。我已经看到了关于您描述的两个服务器在哪里被复制的报告,并且正在编辑两个版本的MDB。结果是,当文件系统复制启动并用另一方的更改覆盖一侧的更改时,数据丢失。 |
3
0
继承的MS访问总是最好的,不是吗?为了尽早完成显而易见的解决方案,我建议将数据移到SQL Server上。这真的不是什么大工作。您还可以通过将数据库(GUI和数据)拆分为单独的.mdb来获得一些好处。 都说了,我从来没有遇到过这种行为。显而易见的问题是:
您可以使用MS Access进行事务处理,但我发现这是一种麻烦,而且常常会导致奇怪的错误(直到您开始摸索事务的碰撞方式)。您的大多数应用程序都可能假定为乐观锁定,并且默认行为与您在Oracle或任何其他真实数据库中对它们的看法相矛盾。这可能不值得。 还有一个想法,可能有两个具有写访问权限的人同时查看同一个记录;一个是在记录的另一个字段中进行更新。 |
4
0
一些想法:
|