2011-12-14 4 views
1

У меня есть правильный MDX-запрос:параметр Range на MDX-запроса

SELECT NON EMPTY { [Measures].[IssueOpened] } ON COLUMNS, 
NON EMPTY { ([Projects].[Id].[Id].ALLMEMBERS * [Priorities].[Id].[Id].ALLMEMBERS) } ON ROWS 
FROM [Reports] 
WHERE [CreatedOn].[Date].&[2010-01-01T00:00:00]:[CreatedOn].[Date].&[2010-02-01T00:00:00] 

Мне нужно создать SSRS-отчет с фильтром по размеру CreatedOn.

Вот мое нерабочее решение:

  • трансформирует запрос:

    SELECT NON EMPTY { [Measures].[IssueOpened] } ON COLUMNS, 
    NON EMPTY { ([Projects].[Id].[Id].ALLMEMBERS * [Priorities].[Id].[Id].ALLMEMBERS) } ON ROWS 
    FROM (SELECT (STRTOSET(@CreatedOnDate, CONSTRAINED)) ON COLUMNS 
    FROM [Reports]) 
    
  • параметра CreatedOnDate (типа = DateTime)

  • Установить значение параметра CreatedOnDate в значение:

    ="[CreatedOn].[Date].[" + Format(CDate(Parameters!CreatedOnDate.Value), "yyyy-MM-dd") + "T00:00:00]" 
    

Но когда я запускаю отчет я получаю:

The restriction imposed by the CONSTRAINED flag in the STRTOSET function were violated 

ответ

2

Как-то параметр не то, что вы думаете. CONSTRAINED флаг заставит генерировать ошибку, если строка не является членом при использовании StrToSet MDX function (проверьте ошибочный пример):

Вы можете попробовать без CONSTRAINED флага или узнать значение вашего параметра:

WITH 
MEMBER myParam AS "[CreatedOn].[Date].[" + 
        Format(CDate(Parameters!CreatedOnDate.Value), "yyyy-MM-dd") 
        + "T00:00:00]" 
SELECT 
    [Measures].[myParam] on 0 
FORM [Reports] 

Игра немного с этим должна облегчить определение проблемы.

0

Он должен работать, если вы используете StrToMember для каждой стороны диапазона

STRTOMEMBER("[CreatedOn].[Date].&[2010-01-01T00:00:00]", constrained):STRTOMEMBER("[CreatedOn].[Date].&[2010-02-01T00:00:00]", constrained) 
Смежные вопросы