我有一个名为DimTiempoMes
的月份参数所以当我运行报告预览时,我在组合框中选择那个月,它可以是1到12个。
如果我选择1,则返回第1个月Fields!InventarioDirecto_Monto.Value
的值
如果我选择3,则返回第1,2和3月等Fields!InventarioDirecto_Monto.Value
的值......
现在我希望得到平均值取决于所选的Fields!InventarioDirecto_Monto.Value
例如:如果我选择值为DimTiempoMes
的{{1}},则公式将为例如:
10
/ InventarioDirecto_Monto Value
执行:DimTiempoMes.Value
/ Sum(1,2,3,4,5,6,7,8,9,10)
所以我尝试下一个表达式:
10
问题是=SUM(Fields!InventarioDirecto_Monto.Value) / CINT(replace(left(Split(Parameters!DimTiempoMes.Value,"[").GetValue(3),2),"]",""))
总是带有12个月值的总和,因此它总是总和为12个月的值
问题是,如何根据所选参数SUM(Fields!InventarioDirecto_Monto.Value)
仅获取Fields!InventarioDirecto_Monto.Value
返回的值?
一些数据:
在这张图片中,我在第一列有3,719,因为我使用DimTiempoMes为1:所以我的colum Acum有表达式也应该是3,719因为DimTiempoMes
等于3719而且除数等于1因为我搜索1.所以3,719 / 1 = 3791,我得到40,593
其他示例:如果我将DimTiempoMes用作4
我应该得到3719 + 3639 + 3378 + 2999/4 = 3433.73我收到10148
更新
我还尝试添加自定义代码,如:
SUM(Fields!InventarioDirecto_Monto.Value)
和表达式类似:
Function Promedio(ByVal items As Object(),ByVal meses As Object(), ByVal Valor1 As integer) As Decimal
If items Is Nothing Then
Return Nothing
End If
Dim suma As Decimal = New Decimal()
Dim ct as Integer = New Integer()
suma = 0
For Each mes As Object In meses
IF CINT(mes) <= Valor1
Then ct = 1
For Each item As Object In items
If (ct = CINT(mes))
Then suma += Convert.ToDecimal(item)
End If
ct += 1
Next
End If
Next
suma = suma/valor1
If (Valor1 = 0) Then return 0 else return suma
End Function
但我没有得到欲望的结果