MS-Access 表中的超链接(指向 Sharepoint)未按预期运行

Hyperlinks (to Sharepoint) in MS-Access tables not behaving as expected

你好 Whosebug 社区,

我刚开始遇到存储在 MS-Access table 中的 hyperlinks 没有按预期运行的问题。

我有一个小型数据库,除其他外,它记录 link 到公司 Sharepoint 网站上托管的文档。直到几天前,数据库和 hyperlinks 都运行良好。

出于某种原因,在过去的几天里,每当我(或我的任何用户)通过访问表单单击这些 hyperlink 时(或者我直接从 table s),我的行为很奇怪:

单击 link 会根据需要打开默认浏览器的新实例。该浏览器确实导航到公司的 Sharepoint 站点。但是 link 中的 none 实际上打开了它们要指向的特定文档。

相反,所有 link 都在 Sharepoint 站点中调出一个通用 file/folder 菜单。就好像这些 link 指向现有文件夹中不存在的文件。

非常奇怪的是,如果我 "edit" 我数据库中的任何一个 hyperlink,然后简单地 select 并从中复制 "address" 文本编辑 hyperlink window,如果直接将地址粘贴到新浏览器中,我总是会立即调出正确的所需文档 window.

我原以为这种类型的 cutting/pasting 必然等同于简单地单击 link。但显然不是这样。

我觉得我可以安全地排除对 Sharepoint 网站本身的任何更改会导致我的问题的可能性,只需单击 links(否则 cutting/pasting 地址不会带来上正确的文档),但我不得不承认,我很困惑为什么直接点击 hyperlinks 就可以工作,但现在却不再工作了。

我认为没有任何代码或其他相关信息可能对我有所帮助而被我忽略了,但如果有人知道什么可能会很乐意提供 clarifications/etc在这里发生。

提前感谢您的任何想法或建议! ~JQN


从那时起,这个问题就被 return 编辑了。我已经能够确定以下内容:

显然,现在我已经找到了文件对话框的解决方法,当问题出现时我很容易解决它。不过,我希望这能引起某些人的注意,也许你们中的某个人可以为我的用户指出正确的方向,以便为我的用户提供更完整的修复。

再次感谢您对此的任何帮助!

看起来这与 Office 处理 URL 请求的(非常不透明的)方式有关。它显然不只是在指定的 link 打开文档,它首先 "pre-tests" (我想这是正确的词) URL 通过首先发送 "Microsoft Office Protocol Discovery" 请求。

显然,Sharepoint 可能不喜欢该 MOPD 请求的细节,如果发生这种情况,Sharepoint 将重定向到文件目录页面——而该目录页面最终会在浏览器中打开预期的 link/document.

同样,这种情况有时会发生,其他时候不会。当它确实发生时,我发现了一个笨拙的解决方法,可以在大约一周左右的时间内解决问题。那一周我无法重现这个问题,我只能等待解决方法过期(我显然不完全理解为什么我笨拙的解决方法有效)。

似乎无法操纵 MOPD 请求的细节。如果可能的话,我希望能够完全免除 MOPD,因为我想要 我通过 Access link 访问的所有文件都以已读方式打开-无论如何。不幸的是,我也不认为这是可能的。

我在另一个 SO 线程 HERE 中找到了一些关于此的信息。我还没有完全准备好提交这个问题的答案,但我对什么样的事情可以作为 acceptable 解决方法有一些想法。

如果有人对我如何能够按需重现问题有任何想法,而不是简单地再等一周 keys/cookies/settings/etc 再次过期,那将很有帮助。 如果可能的话,我需要完全在事物的访问端实施任何可能的解决方案,而不是在 Sharepoint/server 端。再次感谢您的任何建议!

我现在将此作为答案发布,但在我有机会验证它确实有效.

之前,我会避免接受它

我正在插入一些将在数据库启动时 运行 的代码。它将打开一个(不可见的)表单,其中包含一个 Access WebBrowser 控件。我会让该控件导航到 Sharepoint 站点上的特定文件。我相信正是这一行动以某种方式导致 link 问题在一周内得以解决。

此表单将 运行 在后台静默地导航到 sharepoint 文件位置,然后关闭。这应该有望刷新 links 正常工作时存在的 MODP 请求的任何特征(并且在它们不能正常工作时不存在)。

本质上,我希望这种方法能够在每次打开数据库时重置我(大约)一周 window 所需的 link 功能,从而重新开始。换句话说,我认为这会起作用,尽管我仍然不完全理解为什么。

祝我好运!

;)