sharepoint
  • sharepoint-2007
  • caml
  • 2011-01-12 2 views 0 likes 
    0

    У меня есть следующий код:Запрос CAML возвращает неверные результаты?

        SPQuery oQuery = new SPQuery(); 
            oQuery.Query = @"<Query> 
                  <Where> 
                   <And> 
                   <Eq> 
                    <FieldRef Name='PublishToSM' /> 
                    <Value Type='Boolean'>1</Value> 
                   </Eq> 
                   <IsNull> 
                    <FieldRef Name='SMUpdateDate' /> 
                   </IsNull> 
                   </And> 
                  </Where> 
                 </Query>"; 
            SPListItemCollection collListItems = list.GetItems(oQuery); 
    
            NevCoSocialMedia.NevCoFacebook fb = new NevCoSocialMedia.NevCoFacebook(); 
    
            foreach (SPListItem oListItem in collListItems) 
            { 
             if (oListItem.Fields.ContainsField("PublishToSM") && Convert.ToBoolean(oListItem["PublishToSM"]) == true) 
             { 
    . 
    . 
    . 
    

    Мой вопрос, почему мне нужно иметь последнее if заявление? Если у меня этого нет, он будет вызывать ошибку, говоря, что идентификатор не существует, когда он пытается сделать oListItem["PublishToSM"]. Это кажется невозможным, так как мой CAML запрос проверяет, что это имеет соответствующее значение ...

    ответ

    2

    удалить элемент «запрос»

    упаковка вашего камкордера

    0

    Попробуйте изменить тип значения в целое число

    <Eq> 
        <FieldRef Name='PublishToSM' /> 
        <Value Type='Integer'>1</Value> 
    </Eq> 
    

    http://www.sharepointblues.com/2010/02/22/caml-and-querying-boolean-fields/

    +0

    Я думаю, что использование 'Type = 'Boolean'' и' 1' будет работать. Ссылка, на которую вы ссылаетесь, использует «true». –

    0

    Всегда добавляйте ViewFields, если вы этого не сделаете, только базовое поле ds like ID и Title заполняются в возвращаемых списках.

    0

    У меня возникла странная проблема с использованием булевого типа в запросе caml. В 6 из наших 7 сред Boolean работал отлично, но в одном из них это не так, и это полностью испортило один из наших рабочих процессов. Почему мы так и не смогли понять.

    Попробуйте целое или бит для поля «PublishToSM» и посмотрите, есть ли у вас другой результат.

    Смежные вопросы