打开链接到 Sharepoint 的 MSAccess table 时出错
Errors when opening an MSAccess table linked to Sharepoint
我有一个 Microsoft Access 数据库,其中包含一个 table 主动 linked 到 Sharepoint 中的列表。只要我在 Microsoft Access 中对 table 中的记录进行更改,更改就会出现在服务器上。
我有一些数据要添加到 table。我想执行一些 INSERT
& UPDATE
SQL 查询来添加新数据,因为要添加很多行。我要添加的数据在这个数据库中的第二个 table 中,它没有 linked 到共享点列表。
问题是,我的第二个 SQL 查询甚至触及了我的第一个 table linked to Sharepoint 我收到以下错误:
System.Runtime.InteropServices.COMException: 'Could not find installable ISAM.'
我已经尝试用 Microsoft.Office.Interop.Access.Dao
和 OleDb
来做到这一点。它们都很好地连接到数据库,但是每当我尝试将 table link 编辑到 Sharepoint 时,它们都会失败并显示上述错误消息。他们可以编辑任何 table 未主动 linked 到 Sharepoint,没有任何问题。
我花了一段时间在谷歌上搜索我遇到的错误,并找到了各种不同的建议,但是 none 我所看到的建议在这方面对我有所帮助。我确定 Sharepoint 的 link 以某种方式导致此错误,但如果我摆脱 link 我的数据将不会像我想要的那样上传到 Sharepoint。那么我如何克服这个错误并查询 linked table?
我为这些运行尝试的代码
Microsoft.Office.Interop.Access.Dao
Dim dbEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine
Dim dbs As Microsoft.Office.Interop.Access.Dao.Database
Dim rst As Microsoft.Office.Interop.Access.Dao.Recordset2
dbs = dbEngine.OpenDatabase(FileName)
rst = dbs.OpenRecordset("SELECT * FROM SharepointLinkedTable") '<-- Crashes here
OleDb
Dim cnnOLEDB As New OleDbConnection
Dim cmdOLEDB As New OleDbCommand
Dim strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FileName
cnnOLEDB.ConnectionString = strConnectionString
cnnOLEDB.Open()
cmdOLEDB.CommandText = "SELECT * FROM SharepointLinkedTable"
cmdOLEDB.Connection = cnnOLEDB
Dim rdrOLEDB As OleDbDataReader = cmdOLEDB.ExecuteReader '<-- Crashes here
当您将其定义为 Microsoft Access 数据库时,我假设您有一个标准的 Access 文件作为前端,并且它正在 link 作为后端发送到 SharePoint 列表。
主题是是否可以 运行 "Action Queries"(更新、追加、删除)linked SharePoint 列表 table。副手我不确定 - 所以先查一下,看看是否有明确的否定。否则我会删除 SharePoint 列表中的 link 并重新制作它。这只是基本的 "when all else failes - reboot..."
为了帮助澄清错误原因:暂时将 SharePoint 列表复制到前端,使其成为本地 table。请注意,您不能有 2 个 table 同名,因此必须管理命名。
然后设置您的更新/追加查询 - 并确保它们 运行 成功进行本地 table 测试。将它们保存为标准查询,以便它们位于导航窗格中。我建议这样做,因为错误可能会产生误导,真正的原因是错误的查询 - 而不是 link 本身。
然后将它们修改为 linked table 名称并在 SharePoint 列表 table 上将它们 运行 并查看。
经过更多的研究,包括遵循 Cahaba Data
的一些建议,我想出了一个让这个工作的方法。
首先,虽然我找不到任何这样说的文档,但根据我的测试和研究,Sharepoint 2016 似乎不允许 运行 任何 SQL 任何类型的查询table 积极地 linked 到共享点。我在 Internet 上的其他地方找到了一些过去能够做到这一点的人的帖子,但他们都是几年前的,在早期版本的 Sharepoint 上。
所以我从 Sharepoint 取消link我的 tables 和 运行 我的 SQL 查询将数据移动到 unlinked tables 没有问题。让我们称之为 table Table1
.
随着我的数据现在移至 Table1
,我尝试将访问和共享点之间的 link 恢复为 Table1
,但似乎没有执行此操作的选项在共享点。因此,我同步了我的 Sharepoint table 的第二个副本以访问,名为 Table2
.
我试图突出显示 Table1
中的所有行并手动将数据复制并粘贴到 Table2
中,但我收到一些新消息阻止我插入任何数据。错误非常模糊,只是说无效数据。
经过更多研究,我确定 table 中的某些列是问题所在。我的 Sharepoint table 有一个 Person or Groups
列,还有一个 Choice
列。我试图添加到 table 的数据包含这两种列类型不喜欢的值。我最终将这两列都转换为 Sharepoint 中的 Single line of text
字段,并在 Access 中重新创建了 Table1
和 Table2
。
之后,我能够将 Table1
中的数据复制并粘贴到 Table2
中。复制和粘贴需要一些时间(由于我的记录中有大量附件),但它可以正常工作并将数据同步到 Sharepoint。
所以最重要的是,通过一些解决方法,是的,您仍然可以将数据移动到主动 linked 到 Sharepoint 的 Access 表中,但它比以前需要更多的工作。
我有一个 Microsoft Access 数据库,其中包含一个 table 主动 linked 到 Sharepoint 中的列表。只要我在 Microsoft Access 中对 table 中的记录进行更改,更改就会出现在服务器上。
我有一些数据要添加到 table。我想执行一些 INSERT
& UPDATE
SQL 查询来添加新数据,因为要添加很多行。我要添加的数据在这个数据库中的第二个 table 中,它没有 linked 到共享点列表。
问题是,我的第二个 SQL 查询甚至触及了我的第一个 table linked to Sharepoint 我收到以下错误:
System.Runtime.InteropServices.COMException: 'Could not find installable ISAM.'
我已经尝试用 Microsoft.Office.Interop.Access.Dao
和 OleDb
来做到这一点。它们都很好地连接到数据库,但是每当我尝试将 table link 编辑到 Sharepoint 时,它们都会失败并显示上述错误消息。他们可以编辑任何 table 未主动 linked 到 Sharepoint,没有任何问题。
我花了一段时间在谷歌上搜索我遇到的错误,并找到了各种不同的建议,但是 none 我所看到的建议在这方面对我有所帮助。我确定 Sharepoint 的 link 以某种方式导致此错误,但如果我摆脱 link 我的数据将不会像我想要的那样上传到 Sharepoint。那么我如何克服这个错误并查询 linked table?
我为这些运行尝试的代码
Microsoft.Office.Interop.Access.Dao
Dim dbEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine
Dim dbs As Microsoft.Office.Interop.Access.Dao.Database
Dim rst As Microsoft.Office.Interop.Access.Dao.Recordset2
dbs = dbEngine.OpenDatabase(FileName)
rst = dbs.OpenRecordset("SELECT * FROM SharepointLinkedTable") '<-- Crashes here
OleDb
Dim cnnOLEDB As New OleDbConnection
Dim cmdOLEDB As New OleDbCommand
Dim strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FileName
cnnOLEDB.ConnectionString = strConnectionString
cnnOLEDB.Open()
cmdOLEDB.CommandText = "SELECT * FROM SharepointLinkedTable"
cmdOLEDB.Connection = cnnOLEDB
Dim rdrOLEDB As OleDbDataReader = cmdOLEDB.ExecuteReader '<-- Crashes here
当您将其定义为 Microsoft Access 数据库时,我假设您有一个标准的 Access 文件作为前端,并且它正在 link 作为后端发送到 SharePoint 列表。
主题是是否可以 运行 "Action Queries"(更新、追加、删除)linked SharePoint 列表 table。副手我不确定 - 所以先查一下,看看是否有明确的否定。否则我会删除 SharePoint 列表中的 link 并重新制作它。这只是基本的 "when all else failes - reboot..."
为了帮助澄清错误原因:暂时将 SharePoint 列表复制到前端,使其成为本地 table。请注意,您不能有 2 个 table 同名,因此必须管理命名。
然后设置您的更新/追加查询 - 并确保它们 运行 成功进行本地 table 测试。将它们保存为标准查询,以便它们位于导航窗格中。我建议这样做,因为错误可能会产生误导,真正的原因是错误的查询 - 而不是 link 本身。
然后将它们修改为 linked table 名称并在 SharePoint 列表 table 上将它们 运行 并查看。
经过更多的研究,包括遵循 Cahaba Data
的一些建议,我想出了一个让这个工作的方法。
首先,虽然我找不到任何这样说的文档,但根据我的测试和研究,Sharepoint 2016 似乎不允许 运行 任何 SQL 任何类型的查询table 积极地 linked 到共享点。我在 Internet 上的其他地方找到了一些过去能够做到这一点的人的帖子,但他们都是几年前的,在早期版本的 Sharepoint 上。
所以我从 Sharepoint 取消link我的 tables 和 运行 我的 SQL 查询将数据移动到 unlinked tables 没有问题。让我们称之为 table Table1
.
随着我的数据现在移至 Table1
,我尝试将访问和共享点之间的 link 恢复为 Table1
,但似乎没有执行此操作的选项在共享点。因此,我同步了我的 Sharepoint table 的第二个副本以访问,名为 Table2
.
我试图突出显示 Table1
中的所有行并手动将数据复制并粘贴到 Table2
中,但我收到一些新消息阻止我插入任何数据。错误非常模糊,只是说无效数据。
经过更多研究,我确定 table 中的某些列是问题所在。我的 Sharepoint table 有一个 Person or Groups
列,还有一个 Choice
列。我试图添加到 table 的数据包含这两种列类型不喜欢的值。我最终将这两列都转换为 Sharepoint 中的 Single line of text
字段,并在 Access 中重新创建了 Table1
和 Table2
。
之后,我能够将 Table1
中的数据复制并粘贴到 Table2
中。复制和粘贴需要一些时间(由于我的记录中有大量附件),但它可以正常工作并将数据同步到 Sharepoint。
所以最重要的是,通过一些解决方法,是的,您仍然可以将数据移动到主动 linked 到 Sharepoint 的 Access 表中,但它比以前需要更多的工作。