我们在用户登录并根据他们的商店进行身份验证的应用程序中使用 SSRS。当他们生成报告时,我们将他们的商店名称传递给 SSRS 以为其商店生成报告。第一次生成报告时一切正常。但是当用户选择不同的日期范围时,他们会得到系统中所有商店的报告。我们使用 MDX 为 .rdl 中的商店名称提供默认和可用参数,如下所示:
SELECT
NON EMPTY { [Measures].[MTDActiveMembers],
[Measures].[YTDActiveMembers],
[Measures].[MTDMembers],
[Measures].[YTDMembers],
[Measures].[Members],
[Measures].[Members - Active] }
ON COLUMNS,
NON EMPTY { ([Store].[Store].[Store].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION,
MEMBER_UNIQUE_NAME
ON ROWS
FROM
(
SELECT
( STRTOSET(@StoreStore, CONSTRAINED) )
ON COLUMNS
FROM
(
SELECT
( STRTOMEMBER(@FromCalendarDateHierarchy, CONSTRAINED) : STRTOMEMBER(@ToCalendarDateHierarchy, CONSTRAINED) )
ON COLUMNS
FROM
[Members]
)
)
CELL PROPERTIES VALUE,
BACK_COLOR,
FORE_COLOR,
FORMATTED_VALUE,
FORMAT_STRING,
FONT_NAME,
FONT_SIZE,
FONT_FLAGS
逐步浏览该应用程序发现,当用户选择不同的日期范围时,所有参数都保持不变,正确的商店名称被保留,但当用户点击“查看报告”参数时商店名称更改为 ALL。:w00t: 有什么问题吗?就应用程序而言,“查看报告”是一个黑匣子,所以不知道用 rdl 改变什么 :( 提前感谢您的输入。
编辑
对不起,我上面提供的查询是实际的报告查询。参数查询是这样的:
WITH MEMBER [Measures].[ParameterCaption] AS [Store].[Store].CURRENTMEMBER.MEMBER_CAPTION MEMBER [Measures].[ParameterValue] AS [Store].[Store].CURRENTMEMBER.UNIQUENAME MEMBER [Measures].[ParameterLevel] AS [Store].[Store].CURRENTMEMBER.LEVEL.ORDINAL
SELECT
{[Measures].[ParameterCaption],
[Measures].[ParameterValue],
[Measures].[ParameterLevel]}
ON COLUMNS,
[Store].[Store].ALLMEMBERS
ON ROWS
FROM
(
SELECT
( STRTOMEMBER(@FromCalendarDateHierarchy, CONSTRAINED) : STRTOMEMBER(@ToCalendarDateHierarchy, CONSTRAINED) )
ON COLUMNS
FROM
[Members]
)