0

我们公司有一个基于 Web 的员工目录,我正在尝试从 Access 2013 桌面数据库应用程序链接到该目录。指向用户个人资料的链接如下所示:https://mysite.example.com?Person.aspx?guid=9eda6bb0-6b6b-492e-adbb-3c39e8a7fcd0

当我直接在浏览器 (IE9) 中访问该 URL 时,我会自动进行身份验证并重定向到该用户的个人资料。当我在我的桌面上创建一个 URL 超链接并启动它时,IE9 就会启动,我会被重定向到该用户的配置文件。当我将 Excel 单元格的值设置为该 URL 并单击生成的超链接时,行为相同。当我在 Word 中单击该超链接时,再次出现相同的行为。

如果您在访问表单中嵌入 Web 浏览器控件并将其 URI 设置为所需位置,该链接甚至可以工作,即使该链接随后在用户的外部浏览器中打开也是如此。我偶然发现了这个怪癖。

问题是当我从我的 Access 应用程序创建指向该 URL 的超链接并单击它时,IE9 会启动并访问该 URL,但我收到以下错误消息:

There was a problem accessing the site. Try to browse to the site again. If the problem persists, contact the administrator of this site and provide the reference number to identify the problem. Reference number: dc40e099-a58d-472d-b187-ac162d399e28

这似乎是来自 IIS(Microsoft Internet 信息服务框架)的标准身份验证错误。

我在使用Access VBA中的FollowHyperlink函数时遇到了同样的问题。

我能够解决此问题的唯一方法是使用 VBA 命令:Shell "explorer " & Chr(34) & "https://mysite.example.com/Person.aspx?guid=9eda6bb0-6b6b-492e-adbb-3c39e8a7fcd0" & Chr(34)在我元素的Click方法上,但该元素的行为不像本机超链接应该(没有自动超链接样式,没有“手”光标等),我也非常好奇为什么 Access 的超链接与其他 Windows/Office 超链接的行为如此不同。

有任何想法吗?

4

1 回答 1

2

在没有真正解决问题的根本原因(Access 的会话处理中断)的情况下,我已经采取了一种解决方法,它与 Access 的本机超链接非常接近(但不完全相同)。

我将Hyperlink Address标签控件的属性从更改https://mysite.example.com/Person.aspx?guid=9eda6bb0-6b6b-492e-adbb-3c39e8a7fcd0(单个空格)。该空间在那里,因此标签似乎是一个超链接,但在单击时不会将用户重定向到 URI

然后我将标签的OnClick事件设置为 VBA 子例程。该子例程包含以下代码:Shell "explorer " & Chr(34) & "https://mysite.example.com/Person.aspx?guid=9eda6bb0-6b6b-492e-adbb-3c39e8a7fcd0" & Chr(34). 这行代码在资源管理器中打开链接,这应该在用户的默认浏览器中打开超链接。

单击时,该链接将打开浏览器并在身份验证后重定向到所需的页面。此解决方法有效,因为它绕过了 Access 的默认超链接重定向,其中包含损坏的会话处理。我鼓励 Microsoft 的 Access 团队尽快调查此问题。

此外,通过设置控件的ControlTip Text属性(在“其他”选项卡中),您可以设置悬停工具提示以显示目标 URL,就像真正的超链接一样(或者如果您愿意,也可以显示其他一些描述性文本)。

结果是一个看起来、感觉和行为都像超链接但不是超链接的组件。希望微软能尽快解决这个问题,这样就没有必要了,但就目前而言,它工作得很好。

于 2013-11-11T14:48:45.107 回答