【问题标题】:Passing multiple values to SSRS using MDX使用 MDX 将多个值传递给 SSRS
【发布时间】:2015-11-11 06:04:22
【问题描述】:

我正在运行以下命令来获取多值报告

StrToSet
("[Dim Branch].[HierarchyB-T-C].[Trading Code].&[" + 
Replace(
Join(
Parameters!TradingName.Value,"],"
) +"]",",",",[Dim Branch].[HierarchyB-T-C].[Trading Code].&["),",")

但我遇到了一个错误

''Join' 的语法不正确'。

我不知道我做错了什么。有人可以纠正我吗?

如果我将其更改为 StrToSet(@TradingName, Constrained) 它适用于单个值,但我想传递多个值。

【问题讨论】:

  • 您是否将 TradingName 参数设置为允许多个值?使用简单方法发送多个值时会出现什么错误。据我所知,使用 StrToSet 函数的多值参数应该没有问题。我们可能还需要查看您在报告查询中使用的完整 MDX..
  • Kalim 你是对的,如果我在 TradingName 参数中勾选多个值并且只使用 StrToSet(@TradingName, Constrained),它在 SSRS 报告环境中也适用于多个值。但是,我实际上尝试传递逗号分隔的多个值,如果我成功做到这一点,我将能够传递那些在 DATA DRIVEN SUBSCRIPTION 中的值,这是我的最终目标。我发现了一些技巧,可以在 T-SQL 中的 DATA DRIVEN SUBSCRIPTION 中传递多个值,但我正在努力将它们放入我的 MDX,你知道吗?
  • 我不确定您现在要做什么,尤其是在您尝试使用数据驱动订阅时。请记住,数据驱动订阅使用主查询,并且对于主查询返回的每条记录,您的报告都将执行。目前还不清楚你要做什么......
  • 我的回答对您的问题有帮助吗?

标签: reporting-services mdx ssrs-2012


【解决方案1】:

你需要花括号来组成一个集合吗?我在下面的开头添加了一个......有点不确定你的字符串的结尾在哪里 - 它是否像这样.&["?!

StrToSet(
   "{[Dim Branch].[HierarchyB-T-C].[Trading Code].&[" 
   + 
   Replace(
      Join(Parameters!TradingName.Value,"],") + "]"
    , ","
    , ",[Dim Branch].[HierarchyB-T-C].[Trading Code].&["
   )
   ,","
 )

如果Parameters!TradingName.Value 等于MEC,RSA 格式的字符串,那么可能不需要join

StrToSet(
  "{" 
  +
  Replace(
    "[Dim Branch].[HierarchyB-T-C].[Trading Code].&[" 
    + 
    Parameters!TradingName.Value
   , ","
   ,"],[Dim Branch].[HierarchyB-T-C].[Trading Code].&["
  )
  +
  "]}"
 ,constrained)

【讨论】:

  • 对不起,为什么,它没有'工作相同'出现'加入'的语法不正确'。但是感谢您尝试帮助我
  • @SHAMIM 您能否提供一个字符串示例Parameters!TradingName.Value
  • @SHAMIM 我刚刚将您的语句重新排列成单独的行 - 这只是您从某个地方复制的代码吗?!
  • 字符串的例子是MEC,RSA其实就是交易表的TradingCode。
  • 是的,你是对的,我从erikasblog.datainspirations.com/2010/01/21/… 复制了它,然后用“”这个东西编辑了
【解决方案2】:

要从参数传递多个值,我只是按照步骤操作 1 添加参数并命名为

  1. 在数据集属性(共享数据集属性)下,“参数”选项卡以这种方式编写表达式 =Split(参数!TradingName.Value,“,”)

  1. 在共享数据集中,使用 WHERE (StrToSet(@TradingName)) 编写 MDX

SELECT 
   	 {[Total]} ON COLUMNS 
 ,
 	{
	[Dim Account].[Account Type].&[Income] 
	}
	*
    STRTOMEMBER("[Dim Fiscal Year].[HierarchyFiscal].[E Month].&[" + @FiscalYear +"]&[" + FORMAT(Now(),"MMMM") +"].PREVMEMBER")  
	*
	 ORDER
	 (
	 {
	 [Dim Branch].[Branch Name].[Branch Name]
	 },[Total], BDESC
	 )
  ON ROWS
from [CubeProfitLoss]
WHERE (StrToSet(@TradingName))
  1. 当您要预览多个值时,请确保您同样使用 , 来分隔交易名称

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-04
    • 2012-11-18
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    相关资源
    最近更新 更多