2009-02-27 94 views
2

任何人都可以幫助我使用此CAML查詢嗎?當我將Ascending屬性從TRUE翻轉到FALSE(也嘗試過TrueFalse)時,它不會重新排序結果集。CAML查詢沒有正確訂購

其餘的CAML是正確的,它是由一個工具生成的,並且正在返回相應的結果。

<Where> 
    <And> 
    <And> 
     <Eq> 
     <FieldRef Name="Branch"/> 
     <Value Type="Text">Camp 1</Value> 
     </Eq>  
     <Eq> 
     <FieldRef Name="Type"/> 
     <Value Type="Choice">Day</Value> 
     </Eq> 
    </And> 
    <Geq> 
     <FieldRef Name="StartDateTime"/> 
     <Value Type="DateTime">2009-01-05T00:00:00Z</Value> 
    </Geq> 
    </And> 
    <OrderBy> 
    <FieldRef Ascending="TRUE" Name="Title" /> 
    </OrderBy> 
</Where> 

回答

9

OrderBy不是不在Where子句之外嗎?

<Where> 
    <And> 
    <And> 
     <Eq> 
     <FieldRef Name="Branch"/> 
     <Value Type="Text">Camp 1</Value> 
     </Eq>  
     <Eq> 
     <FieldRef Name="Type"/> 
     <Value Type="Choice">Day</Value> 
     </Eq> 
    </And> 
    <Geq> 
     <FieldRef Name="StartDateTime"/> 
     <Value Type="DateTime">2009-01-05T00:00:00Z</Value> 
    </Geq> 
    </And> 
    </Where> 
<OrderBy> 
    <FieldRef Ascending="TRUE" Name="Title" /> 
    </OrderBy> 

http://msdn.microsoft.com/en-us/library/ms442728.aspx

+0

doh!我盯着查詢這麼久,我沒有看到明顯的答案。是的,我建立了生成查詢的工具。對於IncludeTimeValue,爲 – Jason 2009-02-27 12:15:58

4

我上面的答案達成一致,該<查詢>必須<凡>之外。 另請注意,使用日期時間字段比較時,它通常是一個好主意,包括IncludeTimeValue屬性:

<Geq> 
     <FieldRef Name="StartDateTime"/> 
     <Value Type="DateTime" IncludeTimeValue="FALSE">2009-01-05T00:00:00Z</Value> 
</Geq> 

並將其設置爲或真或假,這取決於你是否要包含的值,或者不是在你的查詢。

+0

+1 – Jason 2009-02-27 12:16:36

0

我花了差不多整整一個星期的時間嘗試使用Client OM CamlQuery對象獲取日期訂單。最後,我意識到,我必須設置

camlQuery.DatesInUtc = true; 

在我看來,如果你一旦使用本機對象模型和SPQuery對象的SharePoint解釋默認情況下,該日期爲UTC(在我們的環境中),當您移動到ClientM的CamlQuery對象,您需要設置此參數。