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

Posted

技术标签:

【中文标题】MS Access 365 - 创建包含链接文件的子表单【英文标题】:MS Access 365 - Create SubForm Containing Linked Files 【发布时间】:2020-07-28 21:30:21 【问题描述】:

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

由于将文件附加到数据库是一个值得商榷的举动,我选择保存路径并希望使用FollowHyperlink 来导航和打开文件。

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

通过网上冲浪,我设法创建了一个宏,允许用户将选定的文件和路径存储在名为 LinkLocation 的列中,通过 InputBox 为条目分配昵称,并存储昵称在名为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

我有两个问题。

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

    如何创建双击事件,以便FollowHyperlink 正确参与并打开相关文件?

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

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

提前致谢。

【问题讨论】:

1) 刷新/重新查询子表单,2) 与您创建任何事件的方式相同。我不使用宏,只使用 VBA。 感谢您的尝试,但这不是很有帮助。 重新查询/刷新表单的建议没有帮助?研究 Requery 和 Refresh 命令。你的问题实在是太笼统了。没有用于分析的代码。 附上“工作代码”。 【参考方案1】:

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

Me.LinkLocation = strFullFilePath

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

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

【讨论】:

谢谢。将代码放在绑定控件中对我来说很新鲜。一旦我尝试了这种编写方式,VBA 就足够简单了。出现了一个新问题……在子表单中创建的元素(路径和昵称)不是“保存”的。另一天的任务。 当 1) 关闭表/查询/绑定表单或 2) 移动到另一条记录或 3) 运行代码以保存时,数据将提交到表中。绑定表单和控件是使用 Access 作为用户界面的主要好处。 数据正在提交到表单后面的表中,但当我移动到下一条记录然后返回到原始记录时,数据不会“重新出现”。我对主表单中的其他子表单没有这个问题。我似乎无法正确设置这种关系。非常感谢您推荐的任何用于正确设置子表单的教程。 抱歉,不知道有什么可以推荐给您的。如果您已成功链接其他表单/子表单设置,则应该很容易再做一个。什么是主/子链接字段?您最初的 INSERT 操作似乎没有填充外键字段,因此没有设置主/子链接。 我糊涂了。我结束了将我的***表单主键 - OpportunityID 链接到子表单中的“帮助列”,在我的链接表中也称为 Opportunity ID(外键?)。它感觉很草率,但似乎正在工作。再次感谢您的帮助。

以上是关于MS Access 365 - 创建包含链接文件的子表单的主要内容,如果未能解决你的问题,请参考以下文章

Ms Access 链接表到 IBM iSeries 缺少列

将下拉菜单链接到 MS Access 中的新表单

重新定义 MS Access 文件和 SQL Server 之间的数据链接

将 jpg BLOB 从 Access 365 查询传递到 VBA 函数的问题

MS-Access .mdb 编译器?

MS-Access:对链接的 CSV 文件的慢查询