CAML Query не упорядочивает должным образом - PullRequest
2 голосов
/ 27 февраля 2009

Может кто-нибудь помочь мне с этим запросом CAML? Когда я переворачиваю атрибут Ascending с TRUE на FALSE (также пытался True и False), он не переупорядочивает набор результатов.

Остальная часть 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>

Ответы [ 3 ]

9 голосов
/ 27 февраля 2009

Разве 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

4 голосов
/ 27 февраля 2009

Я согласен с ответом выше, должно быть за пределами . Также обратите внимание, что при сравнении с полями DateTime, как правило, рекомендуется включать атрибут IncludeTimeValue:

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

и задайте для него значение false или true, в зависимости от того, хотите ли вы включить значения времени или нет в ваш запрос.

0 голосов
/ 22 июня 2015

Я потратил почти целую неделю, пытаясь заставить ордера дат работать, используя объект Client OM CamlQuery. Наконец я понял, что должен установить

camlQuery.DatesInUtc = true;

Мне кажется, что если вы используете собственную объектную модель и объект SPQuery, то SharePoint по умолчанию интерпретирует эту дату как UTC (в нашей среде), как только вы переходите к объекту CamlQuery с ClientOM, вам нужно установить этот параметр .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...