0

到目前为止,我一直在成功使用具有拆分后端的数据库。在开发过程中,前端和后端一直在同一个驱动器中,但现在后端在网络驱动器上,为多个用户做准备。

我的问题是,每当我现在从前端打开链接表(或从中读取数据的表单)时,第一个表总是加载缓慢。如果我然后关闭该表并打开另一个表,加载也很慢。但是如果我打开任何一张桌子然后打开第二张桌子,第二张桌子和之后的任何其他桌子都很快。

似乎它可能与必须创建锁定文件有关,然后在表关闭时关闭,这意味着必须为下一个表再次创建该文件时存在延迟。

有没有办法在应用程序启动时创建记录锁定文件,以便它在整个用户会话期间保持可用?

谢谢

4

1 回答 1

0

是的,这是一个广为人知的问题,多年来我们建议您采用所谓的持久连接。

如果你在做开发,那么通常可以做的就是简单地点击一个表(任何链接的表)来打开它,现在你可以工作、设计表单,并且在开发过程中不会遇到巨大的延迟。

虽然上面修复了开发期间和开发时的延迟,但在运行应用程序时可以使用相同的概念和方法。

像每个应用程序一样,您无疑有一些启动代码。此代码可以以您在应用程序启动时启动的第一种形式出现。

因此,您可以创建标准代码模块。说它是Module1。在该模块中,您可以放置​​以下代码:

  Option Compare Database
  Option Explicit
  
  Public rstPersist    As DAO.Recordset
  
  
  Sub MyOpenPersist()
  
      ' opens a back end table to force and keep
      ' open the connection for greatly improved
      ' speed
      
      Set rstPersist = CurrentDb.OpenRecordset("tblDefaults")
  
  End Sub

然后在启动时启动的第一个表单中,甚至在加载时,您可以包含以下代码:

 Call MyOpenPersist

现在,这将为“全局”rstPersit 记录集打开一个表。

现在,从那时起,由于已创建锁定文件(您注意到这需要很长时间),因此应用程序、表单和所有内容现在都将运行而不会出现延迟。

您选择打开哪个表并不重要 - 唯一的要求是该表是一个链接表,因为您可以(并且可能)在前端有一些本地表,用于设置或其他内容。因此,在这种情况下,我打开了一个名为 defaults 的表(打开该表非常好,因为它是一个 1 记录表,其中包含默认内容,例如城市和电话号码的默认区号等)。所以,我实际上可以说是用一块石头杀死了两只鸟,因为无论如何我都需要一张默认表来处理应用程序中的许多事情。

于 2022-03-05T15:21:41.303 回答