如何查询共享点列表数据



>有谁知道如何使用基于特定 SharePoint 用户的 sql 查询来获取 SharePoint 列表数据。

您不能真正 使用 SQL 从 SharePoint 列表中获取数据。执行此操作的最常见方法是自定义解决方案,您可以在其中使用 CAML (SPQuery) 检索列表项(例如由用户创建)的数据 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.aspx 或者您可以公开 SharePoint 服务以获得相同的结果 http://msdn.microsoft.com/en-us/library/sharepoint/jj164060.aspx。

只要它是 SharePoint 2010,只要您有列表 ID GUID,从 SQL 中提取仍然相对容易

看这里

    SELECT
    ud.tp_ID
    , ud.tp_ListId
    , ud.tp_Author
    , ud.nvarchar1
    , ud.nvarchar2
    , ud.nvarchar3
    , ud.nvarchar4
    , ud.nvarchar5
    , ud.nvarchar6
    , ud.nvarchar7
    , ud.nvarchar8
    , ud.nvarchar9
    , ud.nvarchar10
    , ud.nvarchar11
    , ud.nvarchar12
    , ud.*
    FROM dbo.UserData ud
    WHERE (ud.tp_ListId =  '[{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}')

我的情况的解决方案 - 显示SP列表

select l.tp_title
, n1.title.value('(text())[1]', 'nvarchar(32)') as Title
, n2.[status].value('(text())[1]', 'nvarchar(32)') as [Status]
, n3.[priority].value('(text())[1]', 'nvarchar(32)') as [Priority]
from Lists l
join UserData u on u.tp_ListId = l.tp_ID
cross apply tp_ColumnSet.nodes('/nvarchar1') AS n1(title)
cross apply tp_ColumnSet.nodes('/nvarchar3') AS n2([status])
cross apply tp_ColumnSet.nodes('/nvarchar4') AS n3([priority])
where l.tp_title = 'LIST NAME'

首先,您的 SP 列表需要一个捕获用户帐户信息的字段。将 SQL 报表生成器与 SharePoint 列表数据连接配合使用,在报表上设置一个参数,以便@User 。将此参数设置为隐藏参数。将此参数的默认值设置为 =Right(User!UserID,8) :这将为您提供用户帐户信息的最后 8 个字符,然后您可以根据该字符过滤数据集(您的帐户信息可能大于或小于 8,因此请根据您的设置进行构建)。您需要对数据集或表本身设置过滤器,以将列表中的字段与参数进行匹配。

最新更新