2013-08-27 6 views
3

В моем отчете MDX, основанном на кубе, входная справка для даты должна быть календарем, поэтому необходим параметр даты/времени параметра. Поле во времени, с помощью которого я фильтрую данные, является Integer. Пример значения: 20130827.SSAS - Передача параметра отчета MDX в запрос набора данных MDX

Мой набор данных запрос выглядит следующим образом:

SELECT NON EMPTY { [Measures].[Hours In Track] } ON COLUMNS, NON EMPTY { 
([Dim Date].[Date ID].[Date ID].ALLMEMBERS * [Dim Division].[Hierarchy].[Division ID].ALLMEMBERS) } 
DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM 
(SELECT (STRTOSET(@DimDivisionHierarchy, CONSTRAINED)) ON COLUMNS FROM 
(SELECT (STRTOMEMBER(@FromDimDateDateID, CONSTRAINED) : STRTOMEMBER(@ToDimDateDateID, CONSTRAINED)) ON COLUMNS FROM [BicepsArveCube])) 
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 

Я использовал текстовое поле, которое показало мне, что значение параметра типа дата/время выглядит следующим образом: 2013-08-05 00:00:00, а мой DateID - тип Integer, поэтому мне нужно сделать преобразование.

Когда на вкладке параметров набора данных указываю значение параметра как выражение:

="[Dim Date].[Date ID].&[" 
& Replace(Replace("2013-08-05 00:00:00", "-", ""), " 00:00:00", "") 
& "]" 

Я получаю данные, как и ожидалось, все работает отлично. Но когда я изменил жёстко прописанное значение даты/время для значения параметра (дата/время типа):

="[Dim Date].[Date ID].&[" 
& Replace(Replace(Parameters!FromDimDateDateID.Value, "-", ""), " 00:00:00", "") 
& "]" 

Я получаю ошибку нарушения ограничений. Я не знаю почему, потому что, как написано выше, Parameters!FromDimDateDateID.Value выглядит точно так же, как и жестко закодированное значение, которое я использовал.

Я использовал текстовое поле, чтобы проверить, что выражение я получаю после преобразования в обеих случаях (HARDCODED даты и те же даты, выбранные из календаря и переданные в качестве значения параметра), и он выглядит точно так же:

[Dim Date].[Date ID].&[20130805] 

ответ

3

Try

STRTOMEMBER(
    "[Dim Date].[Date ID].&[" 
+ Replace(Replace(@FromDimDateDateID, "-", ""), " 00:00:00", "") 
+ "]", 
CONSTRAINED) 

В MDX - который интерпретируется Analysis Services - вы не можете получить доступ к Reporting Services объекты, такие как Parameters. Вместо этого их значение отправляется на сервер служб Analysis Services вместе с оператором MDX, который может ссылаться на них с помощью нотации @.

+0

Привет, спасибо за ответ, но после реализации вашей идеи при попытке выполнить запрос у меня появилось сообщение об ошибке «Произошла следующая системная ошибка: доступ запрещен». –

+0

Можете ли вы определить из сообщения, если сообщение получено из SSRS или SSAS? У вас есть полный доступ ко всем частям куба или существуют ограничения доступа в кубе? – FrankPl

+0

Эта ошибка исходит из служб SQL Server 2012 Analysis Services. Нет ограничений доступа, и я проверил все возможные роли, priviliges и т. Д. Я мог, все еще имея ту же ошибку :( –