所以我有一个带有前端和后端的Access数据库。我将很快将它分发给用户,但我无法控制他们将文件放在计算机上的确切位置。但是,我认为我可以指望他们将前端和后端放在同一个文件夹中。
因此,当前端打开时,我希望它检查链接表是否正确连接到后端数据库。我有工作代码;但是我不知道把它放在哪里。当前端打开时,会自动打开一个菜单表单(通过启动对话框进行配置)。我把代码放在OnOpen
事件中,我认为在加载任何数据之前就已经发生了,但是当我测试它时,我收到一条消息,告诉我后端无法找到(它正在寻找它旧址)。
基本上,是否有一个我可以使用的事件在任何表格打开之前运行?
答案 0 :(得分:6)
创建一个宏并将其命名为“autoexec”。 对于宏操作,选择“RunCode”,然后将函数名称设置为用于检查链接表的函数的名称。
答案 1 :(得分:2)
正如Matt所说,创建一个宏,称之为“autoexec”,并选择“RunCode”作为宏动作。函数名称参数应该是您希望运行的函数的名称(而不是子函数),如果函数没有参数,您仍应将()放在最后,否则它将无效。
答案 2 :(得分:2)
我通常更喜欢创建一个运行多项检查的小表单,例如查找后端等,并设置各种选项。此表单的open事件的代码可能是:
Me.Visible = False
'Determines if the database window is displayed
SetProp "StartupShowDBWindow", False, dbBoolean
'Hide hidden and system objects
SetOption "Show Hidden Objects", False
SetOption "Show System Objects", False
'Find back end
CheckLinkPath
我保留了一个要在前端链接的表格表,如果缺少任何表格,可以使用此表单报告错误或任何其他错误。
Set RS = CurrentDb.OpenRecordset("Select TableName From sysTables " _
& "WHERE TableType = 'LINK'")
RS.MoveFirst
strConnect = db.TableDefs(RS!TableName).Connect
If Not FileExists(Mid(strConnect, InStr(strConnect, "DATABASE=") + 9)) Then
'All is not well
blnConnectError = True
Else
Do Until RS.EOF()
If db.TableDefs(RS!TableName).Connect <> strConnect Then
blnConnectError = True
Exit Do
End If
RS.MoveNext
Loop
End If
如果一切正常,小表单调用主菜单或表单,用户永远不会看到检查表单。如果需要,我也会使用此表单打开密码提示。
答案 3 :(得分:1)
在将前端和后端放在同一个文件夹之前,请考虑一下。不值得拥有2个文件夹吗?访问同一后端数据库的同一台计算机上的多个用户怎么办?多个用户通过网络访问同一个数据库怎么样?如果您的应用程序基本上是单用户应用程序,那么拥有前端到后端类型的必要性是什么?
为什么不在应用中添加对话框,以防您的连接丢失?您可以在代码中创建一个fileDialog对象,允许用户在他的计算机/网络上的任何位置浏览* mdb文件。然后可以控制所选的mdb文件包含所有请求的表并打开相应的链接(我猜你使用的是transferDatabase命令)。
当您将应用分发给最终用户时,您的应用运行所需的其他工具/参考会怎样?默认情况下,MS Access记录3个基本的:
如果您的应用需要其他任何内容,例如ADO或Office对象(例如ADODB.recordset或Office命令栏),则必须手动为每个安装添加引用,因为最终用户将无法打开VBA窗口并访问工具/参考菜单。
因此,如果您需要在多台计算机上部署应用程序,我强烈建议您使用此free one之类的部署工具。您需要几个小时才能正确使用它,但结果是值得的。您将能够为您的客户提供真正的安装程序模块。它将创建文件夹,添加请求的快捷方式,并管理计算机注册表中的引用。这将使你的部署毫无痛苦!
编辑:autoexec宏绝对是在任何事件之前调用代码的正确解决方案。
编辑:不要忘记你的最终用户可以从Access的运行时版本中获利,这是免费的!
答案 4 :(得分:0)
正如其他人所建议的那样,在这种情况下我会使用AutoExec宏。如果检查链接表的代码当前是子代码,请将其更改为如果成功则返回TRUE的函数。然后,如果链接表代码失败,您可以使用AutoExec宏中的“条件”列以用户友好的错误对话框退出应用程序。您的AutoExec宏可能类似于:
答案 5 :(得分:0)
您可以向他们发送一个* .BAT文件,将数据库复制到c:\ temp(或您选择的任何文件夹。在创建BAT文件之前设置链接到此文件夹。将其压缩并通过电子邮件发送给他们。然后你不必担心额外需要的代码。