使用SharePoint 2010和MS Access 2010更新数据时出现错误

5
我在尝试通过Microsoft Access 2010连接的SharePoint 2010列表更新时遇到了奇怪的错误。
错误:因为没有匹配的记录,所以无法插入数据。
这种情况发生在以下两种情况下:
1.我尝试在MS Access中运行任何UPDATE查询来更新该列表。
2.如果列表视图被过滤,我尝试更新列表中的记录。
第二个问题可能需要解释一下。如果我只是打开Access中的链接列表,滚动到我想要编辑的记录并编辑它,那么它可以正常工作。如果我先过滤该视图(例如,仅显示已选中复选框字段的记录),则无法编辑任何记录并出现错误。
这只发生在一个特定的环境中;其他环境使用任何方法都能正常工作。我已检查了权限(我完全控制该列表,我是网站集管理员等)。我已尝试以各种方式链接到该列表:从Access内部,从SharePoint中的“用Access打开”功能区按钮。我已删除并重新创建了Access数据库文件...但没有成功。
此外,谷歌对这个特定的错误一无所知:搜索确切的错误文本得到0个结果。
有什么想法可以检查吗?使用类似SQL的查询来维护此SharePoint列表是唯一可行的选择。

1
“没有找到匹配记录”通常指的是实施了引用完整性的关系。你可能需要检查关系。此外,这个列表是否有查找字段? - Fionnuala
11个回答

1

我找到了问题所在。当我手动编辑SharePoint列表的“未过滤”视图中的更多记录时,我发现偶尔会有一些记录仍然无法更新并抛出相同的错误。

我碰巧注意到那些无法更新的记录还有另一个设置的列,这是一个查找列(你说得对,Remou)。但奇怪的是,显示的是ID值而不是查找值。这没有意义,因为MS Access也链接了所有相关列表。

我打开了适当的查找列表,只发现Access没有检索任何值。这再次很奇怪,因为这些值存在于SharePoint中,并且如果您在SharePoint中编辑相同的记录,则查找关系是完整的。我无法强制Access更新或修复其与列表的连接。

最终,我删除了查找SharePoint列表并重新创建了它。这解决了MS Access的问题。


1
删除LOOKUP始终是一个好主意。此功能不应存在,因为它将UI组件与表设计混合在一起。 - David-W-Fenton
完全完全完全不同意。LOOKUP 是我在 Access 中唯一喜欢的东西。 - Aaron Kempf

1

我遇到了相同的症状 - 意味着从 MS Access 2010 对特定 SharePoint 列表进行任何更新查询都会失败并显示此错误 - 但我的解决方法不同。上面的解决方案确实让我朝正确的方向看齐了。

在我的情况下,列表中没有用户定义的查找字段。然而,当您链接到一个列表时,在创建链接表时,Access 中还会创建一个名为 UserInfo 的隐式查找表。当我检查这个 UserInfo 表时,它只包含一条记录,而它应该包含几十条记录。

我的解决方法是在 Access 中右键单击此表,选择“更多选项...”,然后选择“重新链接列表...”

我输入了现有的 SharePoint 站点和列表,就好像它们是新的一样。UserInfo 表现在包含了适当数量的记录,并且更新错误已经消失了。


0

我又有一个解决方法。我的查找SharePoint列表已经链接到Access中,但是当我尝试将一张表的记录附加到另一张表时,我刚刚输入了另一个值,用于插入该列的新值。我先尝试了所有重新链接等操作,但都没有起作用。我尝试链接UserInfo表,但也没有帮助。我必须从Access中打开查找列表,然后它才能正常工作。(我也打开了UserInfo表,但我不认为这真的起作用了。)

然而,之前的答案确实让我走上了正确的道路,所以谢谢!


今天我又遇到了这个问题。现在我正在使用Access 2016和SP 2010。刷新列表对我有用。 (我有查找列表,并尝试将两个值连接起来放入第三列。) - Sally

0

我发现当我在更新查询中包含了链接表(具有查找)时,更新查询开始起作用。


0
我曾经遇到过类似的问题,即链接到一个从Access导出到Sharepoint的Sharepoint列表(List1)。当我链接到List1时,我还发现“UserInfo”被添加为一个链接列表。我删除了那个UserInfo链接,认为它是不必要的,但后来发现在尝试使用追加查询更新List1时生成了验证错误。恢复到UserInfo的链接可以修复这些错误;可能是由于Sharepoint添加到List1的“Created By”和“Modified By”列需要查找UserInfo。以上的答案指引了我正确的方向,所以谢谢。

0
在我的情况下,我发现重新链接或刷新我的附加列表并没有对抛出此错误的问题产生影响。然而,当我最初连接到我的SharePoint列表时,我的数据库中自动链接了一个附加列表。通过右键单击该次要列表 > 更多选项 > 点击“刷新列表”,我不再在我的主附加列表上收到错误消息。
这个错误有时会在同一个主列表上发生 - 但现在我知道如何解决它了。
我发现在这里阅读更多关于附加列表的信息很有帮助:http://office.microsoft.com/zh-cn/access-help/import-from-or-link-to-a-sharepoint-list-HA001230313.aspx

0

我认为这种情况发生在您正在更新的列表中有任何无效值时。例如,如果列表项在必填字段中没有值或在具有指定条件的字段中存在非法值,则在更新期间遇到第一个处于“无效状态”的列表项时,您将收到此错误。


0

我遇到了这个问题,上面的回答很有帮助,但并不完全正确。这就是导致我的错误的原因:

我的问题是,我将用户的广告名称作为我要附加的字段之一 - SharePoint列表字段是“人员或组”列。SharePoint正在尝试使用Userinfo表将我传递的UID翻译成用户名。但是,我正在尝试添加分配人未确定的记录,因此该字段应保留为空白。我的访问例程默认为零,尝试输入该值,然后SharePoint的内部查找以获取用户名失败,因为AD中没有记录编号为0的人。在进行了大量成功的测试之后,这使我受到了打击 - 突然什么都不起作用了。当然,事后看来,这是因为我尝试附加了不同的测试数据记录。


0

我曾经遇到过同样的问题。经过15个小时的试错,我终于解决了它。

我的列表中有一列是指向另一个“父”列表的查找列。不知怎么的,在那个查找列中有一个值并没有在“父”列表中出现。

当访问尝试更新非查找字段时,它会运行自己的完整性检查,并意识到我的查找中的值在父列表中找不到,并因此报错。

希望这可以帮到你。


0

我在另一个场景中发现了这个错误。这是在使用SP 2013 on prem和Access 2013时观察到的。

当我使用SP UI中列表页面上的“使用Access打开”按钮创建Access数据库,然后将其他表格(用于其他列表)链接到该数据库中时,我无法对这些附加表格运行更新查询。我收到了OP显示的错误消息。但是,如果我从空白的Access数据库开始,并在我第一次创建数据库时链接所有要使用的表格(列表),那么更新查询将在所有表格上都起作用。

与其他帖子的情况一样,我的列表确实有查找列和人员列,在两种情况下,Access似乎都会自动添加支持这些列的表格。当我使用“使用Access打开”按钮时,似乎只有该表格被“正确”链接到支持表格。在第二种情况下,一切似乎都链接正确。在检查这两个数据库时,我无法发现有什么不同。但是经验上,第二种情况成功了,而第一种情况失败了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接