none
Получить значение Calculated Field в запросе CAML (SPQuery, SPSiteDataQuery). RRS feed

  • Общие обсуждения

  • Возможно тема распространяется и на другие объекты, которые работают с Calculated Fields, но я экспериментировал с указанными в теме.

    В результате запроса получаем значения вида: float;#2017.00000000000 - указание типа;#значение. Я пока извлекаю строку начиная с нужной позиции - но это неправильное решение, я считаю.

    Как применять вычисляемые поля в запросах (<Query>) мне понятно - там требуется точное указание типа в теге Value, типа, который указан в определении поля. Но подобных преобразований в разделе <ViewFields> я не нашел. Структура "Элемент FieldRef (List)" ничего не дает, к тому же для SP 2010 и SP 2013 она вообще ограничена Name и Type. ViewFields - вообще не содержит никаких атрибутов.

    Возможно средствами CAML получить только значение поля? И как правильно работать с такими значениями в коде - rкак оптимально преобразовывать к значениям нужного типа.

    23 января 2017 г. 12:34

Все ответы

  • Добрый день,

    измените в запросе тип:

    <Value Type='Calculated'>ххх</Value>
    на
    <Value Type='Text'>ххх</Value>

    Это не очевидно, но так сделать можно. Возвращаемый тип вашего - Text.


    MS,MCTS,MCP,MCPD: SharePoint Developer 2010

    24 января 2017 г. 10:23
  • Для преобразования можно, например, сразу указать тип Number.

    MS,MCTS,MCP,MCPD: SharePoint Developer 2010

    24 января 2017 г. 10:25
  • Нет, Максим, сейчас поясню. Первый ваш пост - про запросы (Query) - тут все в порядке, для сравнивания вычисляемых полей с каким-то значениями в теге Value указываем тип выражения в выч. поле и все хорошо. На выходе имеем набор элементов, удовлетворяющих условию.

    Вопрос про другое - запрос отработал, получили элементы (записи) списка. И в этих элементах есть вычисляемые поля. И вот когда я уже обхожу выборку запроса (коллекция DataRow), при обращении к значению поля (через [Имя_Поля]) я получаю float;#2017.00000000000 вместо 2017.000... или 2017.

    Так происходит, если читать результат запроса SPQuery, SPSiteDataQuery средствами C#. Если в разделе ViewFields я укажу для вычисляемого поля тип, отличный от Calculated (Text или Number) - запрос будет пустым. Это воспринимается SP как уточнение выборки, а не как приведение к типу. По крайней мере так работает для SPSiteDataQuery - только что проверил.

    25 января 2017 г. 8:07