按Reporting Services 2005中的自定义代码筛选列表?

时间:2010-09-02 15:52:28

标签: sql-server sql-server-2005 reporting-services reportingservices-2005

你能做到吗?我想要使​​用的列表过滤器如下所示:

Expression                                      Operator    Value
=Code.GetOccCat(Fields!accountnumber.Value)     =           =1

没有骰子。基本上,就过滤器而言,它就像该函数返回null一样,但是当我关闭过滤器并将完全相同的函数调用放在列表中的文本框中时,它返回它应该返回的内容。你可以不这样做,或者我错过了什么?

编辑:这是函数,非常简单:

Public Function GetOccCat(ByVal AccountNum As Integer) As Integer
Return OccCat(AccountNum)
End Function

OccCat是一个公共的整数数组,通过早期的函数调用填充。同样,如果我将它放在一个文本框中,则显示正确的值,以便验证数组是否正确填充。

编辑:通过报告顶部的列表填充数组。该列表在accountnumber上重复,没有过滤器。列表中包含一个包含以下代码的文本框:

=Code.SetOccupancy(Fields!accountnumber.Value, First(Fields!new_total_hours.Value)/First(Fields!new_capacity.Value))

这就是这个功能:

Public Function SetOccupancy(ByVal AccountNum As Integer, ByVal Occ As Double) As String
Occupancy(AccountNum) = Occ
Select Occ
    Case Is > .85
        OccCat(AccountNum) = 1
    Case .7 to .849
        OccCat(AccountNum) = 2
    Case .4 to .699
        OccCat(AccountNum) = 3
    Case Is < .4
        OccCat(AccountNum) = 4
End Select
Return ""
End Function

FWIW,我也尝试过基于占用数组的过滤器(在这种情况下为> .85)并得到了相同的结果。

1 个答案:

答案 0 :(得分:0)

你能在代码中显示你的功能吗?

我刚检查过它,它肯定可以过滤掉自定义代码。虽然我没有完全使用你的,因为我不太明白你想要过滤的是什么。

您希望过滤哪个字段?

我认为您只是将表达式的代码放在错误的位置。基本上,将要筛选的字段放在下拉的表达式框中。然后将= code.getocccat(我的值)放在值表达式中。

尝试这个让我知道,但它确实有效。我认为你的位置有点偏。