访问锁定共享模式-编辑报告



我正在access 2002中做一个数据库,在锁定共享模式方面遇到了一些问题。我有一个应用程序,有很多程序和近10个用户登录。该应用程序所做的一件事是打开一个报告,该用户选择程序和数字(通常每个程序有4个数字),在打开报告之前,我以隐藏模式打开它,并编辑当前程序/数字的报告,有了这个rotine,我只有一个报告可能会变成数百。。。保存内存并优化它。然后我保存它并在视图模式下再次打开它。

但问题是,当有其他人使用该应用程序时,访问权限无法编辑和保存报告。。。只是处于独占模式!

在vba中有cmd允许在共享模式下进行即时更改吗?我不知道,像冻结所有用户,保存然后解冻他们?

或者有其他建议吗?

关于创建前端/后端,我认为这是不可行的,因为这是一个测试版,我必须经常更新它,我也已经尝试过了,但它变得太慢了。。。然后,我在一个数据库(只有表)中将所有查询、表单、报告和本地PC中的链接表拆分为网络和前端,但它真的变得太慢了。如果有人能帮我让它更快地解决我的问题太


我拆分了数据库,并试图优化它。我在网上读了很多关于它的文章,我更改了所有需要更改的Access设置,现在我得到了一个更快的程序。但比使用单个应用程序要慢。

但现在有一些表单让我的应用程序速度变慢了。

例如,我有一些表单,当我关闭它时,我总是花很长时间等待它关闭;(所以我意识到这些表格总是在关闭前保存。表单需要保存(与网络中的链接表一起)总是浪费很多时间,所以我需要避免这种情况。

但到目前为止我还没明白。。。

我意识到这些表格之所以保存,是因为在form_open中,我隐藏了一些列(每个程序都不同)并编辑了标题。然后,如果我需要关闭状态,它可以节省和浪费这样的时间!

如果不需要保存表单,我如何隐藏/编辑此列?或者,如何在不保存结构更改的情况下关闭窗体?

我知道如何只用一个按钮就可以做到这一点,但这些表单都是数据表,我只能在"X"表单按钮中关闭它。不幸的是,Access没有BeforeClose事件,在OnClose事件中,它在转到该子之前保存!

查看是否可以将WhereCondition与DoCmd.OpenReport方法一起使用,以避免在运行时修改报告的设计。

WhereCondition应用于报表的现有记录源查询,就好像它被写入该查询的where子句中一样。

因此,如果YourReport的记录源是。。。

SELECT program_id, some_number, another_field
FROM YourTable;

那么这个。。。

DoCmd.OpenReport "YourReport", _
    WhereCondition:="program_id = 7 AND some_number = 22"

将为您提供与将记录源修改为以下行相同的行集。。。

SELECT program_id, some_number, another_field
FROM YourTable
WHERE
        program_id = 7
    AND some_number = 22;

这种方法的优点是,如果你能让它适用于你的情况,你将不再需要对数据库的独占访问,因为你实际上并没有改变报告的设计。

与测试版状态相关的问题使拆分应用程序变得不切实际,这是您应该重新仔细考虑的问题。拆分可确保在对FE应用程序进行更改时可以轻松地将数据保留在BE中。即使您已经想出了另一种方法来避免在更改版本时丢失数据,该方法也不会比将数据隔离到be文件中更简单。

当您拆分应用程序时,每个用户都应该获得自己的FE文件副本,该副本存储在机器的硬盘驱动器上;这些FE文件将包含到存储在文件共享上的BE文件中的表的链接。

在发布新版本时保持用户的FE应用程序的更新是一个已经解决的问题。例如,请参见Tony Toews的Auto FE Updater。你可以通过搜索网页找到其他方法。

如果您关心的是拆分应用程序的性能,请查看Tony的Microsoft Access性能常见问题解答。

最新更新