我有一个带有用户创建函数的表单(请参见此处的函数:Adding a file browser button to a MS Access form)将文件夹路径名称拉入文本框。
理想情况下,我希望此文本成为可以从查询中打开的超链接。但是,对于我从表单添加的所有记录,超链接不起作用。我查看了“编辑超链接”的记录,没有地址。此外,我在制作表单之前手动输入了一些记录,并且通过将文件夹路径名称粘贴到单元格中,它们的超链接工作得很好,现在仍可正常工作。
我认为问题在于我正在使用的函数返回一个普通的字符串,有没有办法在表格中将它转换为工作的超链接?
答案 0 :(得分:3)
粗略地说,功能性Access Hyperlink字段值是一个字符串,其中包含“超链接部分”之间的#
个字符。 (请参阅访问' Application.HyperlinkPart方法帮助主题。)
例如,此DLookup
返回所存储的值,其被显示为 AccessApps 的链接和链接到我的 C:\用户\汉斯\ AccessApps 文件夹。
? DLookup("url", "tblFoo", "id=1")
AccessApps#C:\Users\hans\AccessApps#
但是,如果我只存储包含文件夹路径的字符串...
CurrentDb.Execute "UPDATE tblFoo " & _
"SET url='C:\Users\hans\AccessApps' " & _
"WHERE id=4"
......字符串确实存储了......
? DLookup("url", "tblFoo", "id=4")
C:\Users\hans\AccessApps
...但由于它不包含#
个字符,因此Access不会将其视为可点击的超链接。这只是看起来的文本,就像链接一样,但点击它什么都不做。
同时,您似乎正在使用名为FolderSelection()
的函数来选择文件夹路径字符串。如果要将函数的返回值存储为超链接,则可以在之前和之后包含#
个字符。
"#" & FolderSelection() & "#"
如果您希望将文件夹路径作为链接但将其显示为其他内容,请将显示部分放在第一个#
之前。
"Click Me!#" & FolderSelection() & "#"
答案 1 :(得分:1)
完美,它完全符合我的要求!对于任何感兴趣的人,这里是编辑的代码:
Private Sub Command26_Click()
Dim strChoice As String
strChoice = FolderSelection
If Len(strChoice) > 0 Then
Me.Photo_Location = "#" & strChoice & "#"
' the "#" & additions around strChoice above complete the hyperlink
Else
' what should happen if user cancelled selection?
End If
End Sub
我猜#
字符本来可以放在其他地方,但我是新手!