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

公司專注于為企業(yè)提供做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、商城建設(shè),微信小程序,軟件按需制作等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。
假設(shè)我們現(xiàn)在有一個(gè)Country列表,記錄了全球200多個(gè)國(guó)家和地區(qū)的中文名,英文名,建國(guó)日期,面積,人口等信息,整個(gè)列表只有字符串、日期、數(shù)字等簡(jiǎn)單類型,沒(méi)有User,Lookup等數(shù)據(jù)類型,則整個(gè)List的數(shù)據(jù)都可以從[dbo].[AllUserData]查詢獲得,具體查詢步驟:
1. 查詢[dbo].[AllLists]找到ListId。
select *
from [dbo].[AllLists]
where tp_Title = 'Country'
由于整個(gè)網(wǎng)站集都是共用一個(gè)Content DB數(shù)據(jù)庫(kù),所以可能會(huì)出現(xiàn)在多個(gè)網(wǎng)站中都創(chuàng)建了Country這個(gè)List的情況,那么就會(huì)返還多條結(jié)果,這個(gè)情況下,就需要關(guān)聯(lián)AllWebs表,根據(jù)網(wǎng)站的Url來(lái)判斷到底哪個(gè)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后,接下來(lái)所有查詢都會(huì)用到這個(gè)Id。
2. 查詢[dbo].[AllUserData],找到需要查詢的列,并命名為別名。
假設(shè)第一步我們查詢出來(lái)的ListId是'F20E316B-EA24-4164-9437-BBB17C182691',那么我們查詢Country這個(gè)列表的所有數(shù)據(jù)的SQL就是:
SELECT *
FROM AllUserData
where tp_ListId='F20E316B-EA24-4164-9437-BBB17C182691'
這個(gè)表的列非常多,在SharePoint 2013的環(huán)境中會(huì)更多,但是存儲(chǔ)數(shù)據(jù)的列都是用“數(shù)據(jù)類型+數(shù)字”來(lái)命名的。所以如果要找建國(guó)日期這個(gè)字段對(duì)應(yīng)的列,那么就去看datetime1 datetime2等,如果要找面積,人口等數(shù)值類型的列,那就去看float1 float2等;如果要找中文名,英文名之類的字符串列,那就要看nvarchar1 nvarchar3等列。這里基本上都是靠眼睛來(lái)看的,根據(jù)查詢的結(jié)果推斷哪些字段存儲(chǔ)了哪些數(shù)據(jù)。在得知每個(gè)字段的對(duì)應(yīng)后,即可修改查詢,將別名加上。
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并沒(méi)有在數(shù)據(jù)庫(kù)中以很方便的結(jié)構(gòu)展現(xiàn)哪些列表字段對(duì)應(yīng)哪個(gè)數(shù)據(jù)庫(kù)字段,在AllLists表中,雖然有個(gè)字段tp_Fields,但是在SharePoint2010及之后,該字段是壓縮的二進(jìn)制,使用SQL是無(wú)法讀取的。所以根本不可能通過(guò)查詢數(shù)據(jù)庫(kù)得知哪個(gè)字段的別名是什么。】參考:
3. 過(guò)濾掉已刪除的數(shù)據(jù)。
如果數(shù)據(jù)經(jīng)過(guò)刪除,然后又重新錄入,那么我們就會(huì)發(fā)現(xiàn),第2步的查詢結(jié)果會(huì)把刪除的和重新錄入的數(shù)據(jù)都查詢出來(lái)。SharePoint采用的刪除方法都是軟刪除,通過(guò)設(shè)置一個(gè)標(biāo)志位來(lái)表示一條數(shù)據(jù)已經(jīng)被刪除,所以我們只需要將刪除標(biāo)識(shí)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. 過(guò)濾掉歷史版本的數(shù)據(jù)。
如果這個(gè)列表開(kāi)啟了版本控制,那么我們查詢的結(jié)果可能包含多個(gè)版本的數(shù)據(jù),而我們只需要最新版本的數(shù)據(jù),不希望歷史版本數(shù)據(jù)出現(xiàn)在查詢中。AllUserData表中,使用tp_IsCurrentVersion字段來(lái)標(biāo)識(shí)這條數(shù)據(jù)是最新的當(dāng)前版本還是歷史版本。
于是,查詢最新版本的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. 過(guò)濾掉內(nèi)容審批未通過(guò)的數(shù)據(jù)。
如果這個(gè)列表開(kāi)啟了內(nèi)容審批,那么就會(huì)出現(xiàn)多個(gè)最新版本的情況,一個(gè)是已經(jīng)被審批通過(guò)的版本,另一個(gè)是修改后還沒(méi)有進(jìn)行審批的版本。一般來(lái)說(shuō),我們是希望只有審批通過(guò)的才查詢出來(lái),用戶進(jìn)行修改后,只要審批狀態(tài)不是Approve,那么就不應(yīng)該出現(xiàn)在查詢結(jié)果中。在AllUserData表中,使用tp_ModerationStatus字段來(lái)標(biāo)識(shí)這行數(shù)據(jù)是否已經(jīng)被審批通過(guò)。這是一個(gè)枚舉類型,其值為:
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.
這里,我們只要審批通過(guò)的數(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
moss的分頁(yè)查詢真是個(gè)麻煩的事情,用datatable吧,心有不甘,于是想在caml語(yǔ)句上想辦法
經(jīng)過(guò)多次的失敗,原來(lái)一切都是SPQuery在搗鬼
我們先來(lái)看SPQuery中的三個(gè)屬性
1.RowLimit每次查詢能顯示的最大記錄數(shù)
2.ViewFields
查詢后得到的列
3.ListItemCollectionPosition
查詢時(shí)的開(kāi)始位置
這時(shí),可以通過(guò)XmlDocument的SelectSignleNode("/View/RowLimit").InnerText,修改其中的數(shù)值。
不過(guò),你如果去查看SPQuery.RowLimit,你會(huì)發(fā)現(xiàn)數(shù)值沒(méi)有任何變化
ViewFields:
同樣,這個(gè)屬性也和 RowLimit一樣,他只認(rèn)第一次設(shè)定的值。
第二種方法:每次查詢新建SPQuery實(shí)例
這種方法沒(méi)有上述的任何一個(gè)缺點(diǎn),誰(shuí)叫
它是第一次呢Code:
SPListItemCollectionPosition position = null;
position = new SPListItemCollectionPosition(string.Format(
"Paged=TRUEp_ID={0}"
,items[1]["ID"]));
oSPQuery.ListItemCollectionPosition = position;
汗,懶病發(fā)作了,不想寫了。
使用文件資源查看器。
1、首先打開(kāi)電腦,輸入密碼或者生物認(rèn)證。
2、然后讓對(duì)方發(fā)送sharepoint文件,在電腦上接收。
3、最后使用文件資源查看器查看即可。
文章題目:sharepoint查詢 sharepoint access
文章地址:http://chinadenli.net/article14/doecdge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、微信公眾號(hào)、定制開(kāi)發(fā)、App設(shè)計(jì)、虛擬主機(jī)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)