【问题标题】:Creating a link to a file on a form but file address is stored on another table在表单上创建指向文件的链接,但文件地址存储在另一个表中
【发布时间】:2018-09-24 23:17:26
【问题描述】:

我制作了一个表格,用作网络上受控文档的跨部门签核表。该数据库已经包含一个表格,其中包含每个文档位置的超链接字段。该表还有一个文档 ID 的文本字段。我的表单将其信息存储在另一个表中,但我希望我仍然可以使用第一个表中的超链接,而不是在第二个表中创建新链接。

我的谷歌搜索将我带到this forum post,它展示了使用 FollowHyperlink 和 DLookup 的单行:

Application.FollowHyperlink DLookup("Document_ID", "Documents", "Document_ID = '" & Me.DocumentID.Value & "'")

Document_ID 是保存超链接的字段。

Me.DocumentID 是用户输入的文本框,当点击该字段时代码运行。

我尝试了多种代码变体,包括将表格字段包装在括号“[]”中,使用超链接字段或文本字段作为条件,使用 Like 而不是 =(以及 Me.DocumentID 周围的星号)。所有这些都会导致运行时错误 2471:

您作为查询参数输入的表达式产生了以下错误: 'Document_ID'

这让我觉得 Dlookup 不喜欢超链接字段,因为我可以很好地提取其他字段。我错过了什么?或者有没有更好的方法来引用不同表中的超链接?

【问题讨论】:

  • 引用您的 dlookup 中的表格 FollowHyperlink DLookup("[tableName]![Document_ID]", "Documents", "[tableName]![Document_ID]= '" & Me.DocumentID.Value & "'")
  • 我仍然收到同样的错误,刚才它显示 [Documents]![Document_ID]。 (Documents 是表的名称。)
  • 如果您的Documents 表不包含名为Document_ID 的字段,则可能会发生2471 错误如果您使用以下表达式进行测试,Access 将如何响应? ...Debug.Print DLookup("Document_ID", "Documents")
  • @HansUp,Debug.Print 行出现同样的错误。肯定有一个具有该名称的字段,我在 Me.DocumentID 中测试的值有效,我可以将表过滤为该值,并且超链接从表中有效。
  • 只是为了仔细检查 Document_ID 不是 出于某种原因的名称,我打开了一个使用 Documents 表并具有超链接字段控件的表单。控制源显示“Document_ID”,因此该名称应该有效。

标签: ms-access vba


【解决方案1】:

感谢 HansUp 为我指明了正确的方向。结果表中不存在“Document_ID”。相反,超链接字段在下划线和 ID(“Document_ ID”)之间有一个空格,直到将名称从表中复制到空格更明显的 vba 中,我才发现它。

在条件中使用超链接字段时,Dlookup 将不起作用,因此使用具有文档 ID 的文本字段并将我的代码更改为以下内容,因为 .FollowHyperlink 不会采用整个字段值(标题#地址)

Dim LinkText As String

LinkText = DLookup("[Document_ ID]", "Documents", "[DocID] = '" & Me.DocumentID & "'")
LinkText = Application.HyperlinkPart(LinkText, acAddress)
Application.FollowHyperlink LinkText

控件现在将打开存在的文档(现在可以处理文档不存在时使用的代码)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2018-06-19
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    相关资源
    最近更新 更多