SharePoint中CAML語句時間型別的比較

2022-09-05 15:54:09 字數 1139 閱讀 8529

在做sharepoint的列表查詢的時候,經常要用到caml,今天我在做乙個工作流授權列表的查詢,裡面要求根據人員、工作流名稱、授權開始時間和授權結束時間找到對應的授權人,沒有找到就返回本人。使用caml querybuilder生成了查詢,然後修改了其中的對應的變數,進行查詢。結果發現查詢結果有問題。原來是在caml中使用的日期型別的表示必須是一種國內很少用的特殊的格式,,形如"2011-06-09t15:11:20z"網上找了一下,使用sputility.createiso8601datetimefromsystemdatetime

這個函式就可以生成這種格式,當然,其實是有datetime.tostring(「格式」)也是可以的。查詢的caml是這樣的:

string dstring =sputility.createiso8601datetimefromsystemdatetime(datetime.now); 

q.query = @"

" + wfname + @"

" + us.id + @"

" + dstring + @"

" + dstring + @"

";

這樣做以後進行查詢,大部分情況都對了,但是有時候還是會不對,那就是在當天的時候。比如我設定了開始時間是2009-4-9 10:00:00,而現在的時間是9號的14點,但是查詢卻沒有返回結果,經過多次試驗,終於找到原因,原來是根本沒有對時間字段進行比較,而只是對日期進行比較,由於4月9號並不大於4月9號,所以就找不到結果。

要進行時間欄位的比較,那麼需要在caml中的value欄位上新增includetimevalue='true',新增後就可以進行時間欄位的比較了。

string dstring =sputility.createiso8601datetimefromsystemdatetime(datetime.now); 

q.query = @"

" + wfname + @"

" + us.id + @"

" + dstring + @"

" + dstring + @"

";

這裡我寫的時候,犯了個錯,把includetimevalue='true'寫到fieldref中去了,以為就跟lookupid='true'一樣,結果老是查詢不比較時間字段。

CAML 案例 sharepoint搜尋功能

jianyi寫的camlquery 和smartquery非常強大,為了使他更強大 更自動化,增加乙個listquerywebpart,1.通過smartquery動態生成查詢控制項 2.通過camlquery生成查詢語句 正在討論增加基於iquerycontrol介面的控制項型別擴充套件,使得開發...

SharePoint 中AJAX請求報錯

前言 最近,乙個專案跨系統取資料,呼叫其他系統的service,所以就ajax麼。不過,過程不太順利,一直報錯。錯誤資訊 responsetext 錯誤截圖 源 ajax datatype text success function result 後面搜了好多帖子,發現是引數data的問題,需要格式...

如何在SharePoint中Debug

工作忙,廢話少說 1.把assembly對應的dll部署到gac的同時,還需要把對應的.pdb檔案拷貝到gac中,最好的方式是在部署指令碼中用xcopy命令把.pdb檔案拷貝到gac中 2.剩下的工作就和asp.net的debug差不多了,除錯的時候附加到當前的w3wp程序,在需要跟蹤的地方設定斷點...