MS Access 365 - 创建包含链接文件的子表单

MS Access 365 - Create SubForm Containing Linked Files

我创建了一个 table 和表单来跟踪销售机会。我希望用户能够将我们服务器上的关联文件“连接”到每个机会。例如,他们可能喜欢指向报价的机会。

由于将文件附加到数据库是一个 debatable 动作,我选择保存路径并希望使用 FollowHyperlink 导航和打开文件。

我的策略是创建一个包含与特定机会关联的链接的子表单。然后用户可以单击子表单中的子表单昵称以打开关联的文件。

通过网上冲浪,我设法创建了一个宏,允许用户将所选文件和路径存储在名为 LinkLocation 的列中,通过 [=13= 为条目分配昵称],并将昵称存储在名为 LinkName 的列中。此宏按预期工作。

编辑:代码共享。

Sub test()

 Dim f    As Object
 Dim strSQL As String
 Dim strShorthand As String ' Short hand name for display in subform.
 Dim strFullFilePath As String ' Full file path

 Set f = Application.FileDialog(3)

 f.allowMultiSelect = False
 
 f.Show
 
 strFullFilePath = f.SelectedItems(1)
 
 strShorthand = InputBox("Enter the shorthand name here.")
  
strSQL = "INSERT INTO tblLinks (LinkLocation, LinkName) Values ('" & 
    strFullFilePath & "','" & strShorthand & " ');"
 
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True

End Sub

我有两个问题。

  1. 当我单击以在链接到 tblLinks 的子表单中创建新记录时,我的宏运行并且数据被正确存储。但是,新创建的记录并没有显示在子表单中。

  2. 如何创建双击事件以便 FollowHyperlink 正确参与并打开有问题的文件?

我在网上找不到这两个问题的答案。

我已经为 Excel 编写了大量复杂的 VBA,但是 Access 对我来说是全新的。欢迎您推荐任何资源。

提前致谢。

将值输入表单的绑定控件而不是 运行 INSERT 操作,问题将消失。代替 LinkName 的 InputBox,只需在表单上输入文本框即可。如果打算输入新项目,请确保焦点位于新记录行。然后在子表单后面编码:

Me.LinkLocation = strFullFilePath

否则,必须重新查询或刷新表单才能显示新记录。同样,如果代码在子表单后面,只需:Me.Requery.

至于双击事件,您已经知道如何创建 VBA 代码,因此使用 FollowHyperlink 命令为此事件做同样的事情。可以双击文本框或单击命令按钮。格式化为看起来像可点击的超链接。将文本框设置为锁定状态,这样用户就不会意外编辑。