【发布时间】:2013-08-27 11:08:55
【问题描述】:
在我的基于多维数据集的MDX报表中,日期的输入帮助必须是日历,因此日期/时间类型的参数是必不可少的。我过滤数据的时间维度字段是整数。示例值:20130827。
我的数据集查询如下所示:
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", "")
& "]"
我得到了预期的数据,一切正常。但是当我将硬编码的日期/时间值更改为参数值(类型 date/time )时:
="[Dim Date].[Date ID].&["
& Replace(Replace(Parameters!FromDimDateDateID.Value, "-", ""), " 00:00:00", "")
& "]"
我收到一个违反约束的错误。我不知道为什么,因为如上所述,Parameters!FromDimDateDateID.Value 看起来与我使用的硬编码值完全相同。
我使用文本字段来检查两种情况下转换后得到的表达式(硬编码日期和从日历中选择并作为参数值传递的相同日期),它看起来完全一样:
[Dim Date].[Date ID].&[20130805]
【问题讨论】: