我有一个MDX查询,可以使用由参数@FYear返回的fin年(即1213,1314,1415)。
是否可以将参数更改为之前的finyear?
因此,如果用户选择了鳍年1314,则该值将为1213。
在访问中我可以使用这样的东西:
IIf(Len(Left(@FYear,2)-1)>1,Left(@FYear,2)-1,Format((Left(@FYear,2)-1),"00")) & IIf(Len(Right(@FYear,2)-1)>1,Right(@FYear,2)-1,Format((Right(@FYear,2)-1),"00"))
但它似乎不适用于此。我得到的错误是"查询(16,16)运算符或表达式'&'在此上下文中不受支持。"
我试图将2个IIfs连接到+"" +和&""&但没有运气。
任何建议都将不胜感激。
答案 0 :(得分:1)
我假设您使用current_path = '/data/prod/current'
之类的报告应用程序来使用此参数。如果SSRS
从字体结尾返回1213,1314等的数字值,则必须首先将其设置为看起来像层次结构成员。像这样......
@FYear
现在,如果要在MDX查询中使用此参数,则必须将其转换为集合。这是一个字符串。所以你想使用"Calendar.FinYear.&[" + @FYear + "]"//----->It would now look like Calendar.FinYear.&[1314]
函数。
StrToSet
最后,你说你想实际上到上个财政年度。
在MDX层次结构树中,成员一个接一个地加强了 -
1011
1112
1213
1314
1415等等..
有多种方式可以联系会员" 1213"来自会员" 1314"。最简单的方法之一就是使用StrToSet("Calendar.FinYear.&[" + @FYear + "]")
函数。
最后,您的参数看起来像 -
PrevMember
但是,所有的说法和做法,如果你仍然坚持以上述方式接触上一个成员,那么两个小的调整。
首先,使用StrToSet("Calendar.FinYear.&[" + @FYear + "].PrevMember")
运算符进行连接,其次,将左右位转换为字符串(也可以在没有这个的情况下工作,但只是为了更安全一面)
+
希望这有帮助。
编辑:
用于调试 -
尝试
CStr(IIf(
Len(Left(@FYear,2)-1)>1,
Left(@FYear,2)-1,
Format((Left(@FYear,2)-1),"00")))
+
CStr(IIf(
Len(Right(@FYear,2)-1)>1,
Right(@FYear,2)-1,
Format((Right(@FYear,2)-1),"00")))
如果这样可行,那么StrToSet("[Discharge Date].[Fiscal Date].[Fiscal Year].&[1314].PrevMember")
就没有问题。您应该检查MDX
中的参数。我感觉不返回SSRS
。也可能是格式问题。