sharepoint查詢 sharepoint access

如何從SharePoint Content DB中查詢List數(shù)據(jù)

Case 1簡單數(shù)據(jù)類型的自定義列表查詢

公司專注于為企業(yè)提供做網(wǎng)站、成都網(wǎng)站設計、微信公眾號開發(fā)、商城建設,微信小程序,軟件按需制作等一站式互聯(lián)網(wǎng)企業(yè)服務。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務。

假設我們現(xiàn)在有一個Country列表,記錄了全球200多個國家和地區(qū)的中文名,英文名,建國日期,面積,人口等信息,整個列表只有字符串、日期、數(shù)字等簡單類型,沒有User,Lookup等數(shù)據(jù)類型,則整個List的數(shù)據(jù)都可以從[dbo].[AllUserData]查詢獲得,具體查詢步驟:

1. 查詢[dbo].[AllLists]找到ListId。

select *

from [dbo].[AllLists]

where tp_Title = 'Country'

由于整個網(wǎng)站集都是共用一個Content DB數(shù)據(jù)庫,所以可能會出現(xiàn)在多個網(wǎng)站中都創(chuàng)建了Country這個List的情況,那么就會返還多條結(jié)果,這個情況下,就需要關聯(lián)AllWebs表,根據(jù)網(wǎng)站的Url來判斷到底哪個ListId才是我們需要的。

select w.FullUrl,l.tp_ID

from [dbo].[AllLists] l

inner join [dbo].[AllWebs] w

on l.tp_WebId=w.Id

where l.tp_Title = 'Country'

在找到了ListId后,接下來所有查詢都會用到這個Id。

2. 查詢[dbo].[AllUserData],找到需要查詢的列,并命名為別名。

假設第一步我們查詢出來的ListId是'F20E316B-EA24-4164-9437-BBB17C182691',那么我們查詢Country這個列表的所有數(shù)據(jù)的SQL就是:

SELECT *

FROM AllUserData

where tp_ListId='F20E316B-EA24-4164-9437-BBB17C182691'

這個表的列非常多,在SharePoint 2013的環(huán)境中會更多,但是存儲數(shù)據(jù)的列都是用“數(shù)據(jù)類型+數(shù)字”來命名的。所以如果要找建國日期這個字段對應的列,那么就去看datetime1 datetime2等,如果要找面積,人口等數(shù)值類型的列,那就去看float1 float2等;如果要找中文名,英文名之類的字符串列,那就要看nvarchar1 nvarchar3等列。這里基本上都是靠眼睛來看的,根據(jù)查詢的結(jié)果推斷哪些字段存儲了哪些數(shù)據(jù)。在得知每個字段的對應后,即可修改查詢,將別名加上。

SELECT d.nvarchar1 as ChineseName,

d.nvarchar3 as EnglishName,

d.datetime1 as FoundingDate,

d.float1 as Area,

d.float2 as Population

FROM AllUserData d

where tp_ListId='F20E316B-EA24-4164-9437-BBB17C182691'

【注意:SharePoint并沒有在數(shù)據(jù)庫中以很方便的結(jié)構(gòu)展現(xiàn)哪些列表字段對應哪個數(shù)據(jù)庫字段,在AllLists表中,雖然有個字段tp_Fields,但是在SharePoint2010及之后,該字段是壓縮的二進制,使用SQL是無法讀取的。所以根本不可能通過查詢數(shù)據(jù)庫得知哪個字段的別名是什么。】參考:

3. 過濾掉已刪除的數(shù)據(jù)。

如果數(shù)據(jù)經(jīng)過刪除,然后又重新錄入,那么我們就會發(fā)現(xiàn),第2步的查詢結(jié)果會把刪除的和重新錄入的數(shù)據(jù)都查詢出來。SharePoint采用的刪除方法都是軟刪除,通過設置一個標志位來表示一條數(shù)據(jù)已經(jīng)被刪除,所以我們只需要將刪除標識tp_DeleteTransactionId=0添加到where條件中,即可將未刪除的數(shù)據(jù)返回。

SELECT d.nvarchar1 as ChineseName,

d.nvarchar3 as EnglishName,

d.datetime1 as FoundingDate,

d.float1 as Area,

d.float2 as Population

FROM AllUserData d

where tp_ListId='F20E316B-EA24-4164-9437-BBB17C182691' and d.tp_DeleteTransactionId=0

4. 過濾掉歷史版本的數(shù)據(jù)。

如果這個列表開啟了版本控制,那么我們查詢的結(jié)果可能包含多個版本的數(shù)據(jù),而我們只需要最新版本的數(shù)據(jù),不希望歷史版本數(shù)據(jù)出現(xiàn)在查詢中。AllUserData表中,使用tp_IsCurrentVersion字段來標識這條數(shù)據(jù)是最新的當前版本還是歷史版本。

于是,查詢最新版本的SQL改為:

SELECT d.nvarchar1 as ChineseName,

d.nvarchar3 as EnglishName,

d.datetime1 as FoundingDate,

d.float1 as Area,

d.float2 as Population

FROM AllUserData d

where tp_ListId='F20E316B-EA24-4164-9437-BBB17C182691' and d.tp_DeleteTransactionId=0 and d.tp_IsCurrentVersion=1

5. 過濾掉內(nèi)容審批未通過的數(shù)據(jù)。

如果這個列表開啟了內(nèi)容審批,那么就會出現(xiàn)多個最新版本的情況,一個是已經(jīng)被審批通過的版本,另一個是修改后還沒有進行審批的版本。一般來說,我們是希望只有審批通過的才查詢出來,用戶進行修改后,只要審批狀態(tài)不是Approve,那么就不應該出現(xiàn)在查詢結(jié)果中。在AllUserData表中,使用tp_ModerationStatus字段來標識這行數(shù)據(jù)是否已經(jīng)被審批通過。這是一個枚舉類型,其值為:

0 The list item is approved.

1 The list item has been denied approval.

2 The list item is pending approval.

3 The list item is in the draft or checked out state.

4 The list item is scheduled for automatic approval at a future date.

這里,我們只要審批通過的數(shù)據(jù),所以我們的SQL更新為:

SELECT d.nvarchar1 as ChineseName,

d.nvarchar3 as EnglishName,

d.datetime1 as FoundingDate,

d.float1 as Area,

d.float2 as Population

FROM AllUserData d

where tp_ListId='F20E316B-EA24-4164-9437-BBB17C182691' and d.tp_DeleteTransactionId=0 and d.tp_IsCurrentVersion=1 and tp_ModerationStatus=0

Sharepoint Caml分頁查詢的幾種方法

moss的分頁查詢真是個麻煩的事情,用datatable吧,心有不甘,于是想在caml語句上想辦法

經(jīng)過多次的失敗,原來一切都是SPQuery在搗鬼

我們先來看SPQuery中的三個屬性

1.RowLimit每次查詢能顯示的最大記錄數(shù)

2.ViewFields

查詢后得到的列

3.ListItemCollectionPosition

查詢時的開始位置

這時,可以通過XmlDocument的SelectSignleNode("/View/RowLimit").InnerText,修改其中的數(shù)值。

不過,你如果去查看SPQuery.RowLimit,你會發(fā)現(xiàn)數(shù)值沒有任何變化

ViewFields:

同樣,這個屬性也和 RowLimit一樣,他只認第一次設定的值。

第二種方法:每次查詢新建SPQuery實例

這種方法沒有上述的任何一個缺點,誰叫

它是第一次呢Code:

SPListItemCollectionPosition position = null;

position = new SPListItemCollectionPosition(string.Format(

"Paged=TRUEp_ID={0}"

,items[1]["ID"]));

oSPQuery.ListItemCollectionPosition = position;

汗,懶病發(fā)作了,不想寫了。

怎么查看別人的sharepoint

使用文件資源查看器。

1、首先打開電腦,輸入密碼或者生物認證。

2、然后讓對方發(fā)送sharepoint文件,在電腦上接收。

3、最后使用文件資源查看器查看即可。

文章題目:sharepoint查詢 sharepoint access
文章地址:http://muchs.cn/article14/doecdge.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、微信公眾號、定制開發(fā)App設計、虛擬主機、響應式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化