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

时间:2012-03-05 21:06:29

标签: vba ms-access locking

我在access 2002中做了一个db,我在锁定共享模式时遇到了一些问题。我有一个应用程序,有很多程序,几乎有10个用户登录。应用程序执行的操作之一是打开报表,用户选择程序和编号(每个程序通常有4个编号),在报表打开之前,我以隐藏模式打开它并编辑当前报表程序/号码,有了这个rotine我只有一个报告,可能会变成数百个......节省内存并优化它。然后我保存并在查看模式下再次打开它。

但问题是其他人何时使用该应用,因此访问无法编辑和保存报告......只是在独占模式下!

在vba中是否有cmd允许在共享模式下暂时更改?我不知道,比如冻结所有用户,保存然后解冻它们?

还是其他任何建议?

关于创建前端/后端我认为这是不切实际的,因为是测试版,我必须经常更新它,我已经尝试过这样做,但它变得太慢了......我分手了然后在数据库(只是表格)中进入网络和前端,包含本地PC中的所有查询,表单,报告和链接表,但它实际上变得太慢了。如果有人可以帮助我,让它更快就能解决我的问题


我分裂了数据库,我正在尝试优化它。我在网上看了很多关于它的内容,我改变了所有需要更改的Access设置,现在我得到了一个更快的程序。但比使用单个应用程序要慢。

但是现在只有表格让我的应用变慢了。

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

但到目前为止我还没有得到它......

我意识到这种形式是保存的,因为在form_open中我隐藏了一些列(每个程序不同)并编辑它。然后,如果我需要关闭表格,它会节省并浪费这个时间!

如何在需要保存表单的情况下隐藏/编辑此列?或者如何在没有保存结构更改的情况下关闭表单?

我知道如何只使用一个按钮,但这些表格是数据表,我只能在“X”表单按钮中关闭它。不幸的是,Access没有BeforeClose事件,并且在OnClose事件中它会在转到此子目录之前保存!

1 个答案:

答案 0 :(得分:1)

查看是否可以使用DoCmd.OpenReport Method使用 WhereCondition ,以避免在运行时修改报表的设计。

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 Performance FAQ