打开链接到Sharepoint的MSAccess表时出错

时间:2018-03-23 21:26:25

标签: sql ms-access sharepoint dao

我有一个Microsoft Access数据库,其中包含一个主动链接到Sharepoint中的List的表。只要我在Microsoft Access中对表中的记录进行更改,服务器上就会出现更改。

我有一些数据要添加到该表中。我想要执行一些INSERT& UPDATE SQL查询添加新数据,因为要添加很多行。我想要添加的数据位于此数据库的第二个表中,它未链接到共享点列表。

问题是,第二个我的SQL查询甚至触摸我的第一个链接到Sharepoint的表我得到以下错误:

  

System.Runtime.InteropServices.COMException:'找不到可安装的ISAM。'

我尝试使用Microsoft.Office.Interop.Access.DaoOleDb执行此操作。它们都很好地连接到数据库,但每当我尝试触摸链接到Sharepoint的表时,都会失败并显示上述错误消息。他们可以编辑任何没有主动链接到Sharepoint的表,没有任何问题。

我花了一段时间谷歌搜索我得到的错误,并找到了各种不同的建议,但我见过的所有建议都没有帮助我。我确定Sharepoint的链接是以某种方式导致此错误,但如果我摆脱链接,我的数据将不会像我想要的那样上传到Sharepoint。那么如何通过此错误并查询链接表?

我试图为这些

运行的代码

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

2 个答案:

答案 0 :(得分:0)

当您将其定义为Microsoft Access数据库时,我将假设您有一个标准的Access文件作为前端,并且它将链接到SharePoint列表作为后端。

主题是是否可以在链接的SharePoint列表表上运行“操作查询”(更新,附加,删除)。我不确定 - 所以先看看,看看是否有明显的否定。否则,我会删除SharePoint列表的链接并重新制作它。这只是基本的“当所有其他错误 - 重启...”

帮助澄清错误原因:将SharePoint列表临时复制到前端,使其成为本地表。请注意,您不能拥有2个具有相同名称的表,因此必须管理命名。

然后设置更新/追加查询 - 并确保它们成功运行到本地表测试。将它们保存为标准查询,以便它们位于导航窗格中。我建议这样做,因为错误可能会产生误导,而真正的原因是错误的查询 - 而不是链接本身。

然后将它们修改为链接表名称并在SharePoint列表表格上运行它们并查看。

答案 1 :(得分:0)

经过一些更多的研究,包括遵循Cahaba Data的一些建议,我找到了一种方法让它发挥作用。

首先,虽然我找不到任何说明的文件,但它似乎是基于我的测试&amp;研究表明,Sharepoint 2016不允许对主动链接到sharepoint的表运行任何类型的SQL查询。我在互联网上的其他地方发现了一些线程,这些线程过去能够做到这一点,但是在早期版本的Sharepoint上,所有这些线程都已经存在了几年。

所以我将我的桌子与Sharepoint&amp;运行我的SQL查询以将数据移动到未链接的表中而不会出现问题。让我们调用此表Table1

我的数据现已移至Table1我尝试将访问权限和共享点之间的链接恢复为Table1,但似乎没有在Sharepoint中执行此操作的选项。因此,我同步了我的Sharepoint表的第二个副本以进行访问,称为Table2

我尝试突出显示Table1中的所有行,并手动将数据复制并粘贴到Table2中,但我收到一些新邮件,导致我无法插入任何数据。错误很模糊,只是说无效数据。

经过一些研究后,我确定表中的某些列是问题所在。我的Sharepoint表有一个Person or Groups列,以及一个Choice列。我试图添加到表中的数据包含这两种列类型不喜欢的值。我最终将这两列转换为Sharepoint中的Single line of text字段,并在Access中重新创建Table1Table2

之后,我可以将Table1中的数据复制并粘贴到Table2中。副本&amp;粘贴花了一些时间(由于我的记录中有大量的附件),但是它起作用了将数据同步到Sharepoint。

所以底线,有一些解决方法,是的,您仍然可以将数据移动到与Sharepoint有效链接的Access表中,但它需要比以前更多的工作。