Ты можешь сделать это? Фильтр списка, который я хочу использовать, выглядит следующим образом:
Expression Operator Value
=Code.GetOccCat(Fields!accountnumber.Value) = =1
Без кубиков. По сути, она действует так, что эта функция возвращает ноль в отношении фильтра, но когда я снимаю фильтр и помещаю точно такой же вызов функции в текстовое поле в списке, она возвращает то, что должна вернуть. Ты можешь просто не делать этого, или чего мне не хватает?
Редактировать: вот функция, совершенно простая:
Public Function GetOccCat(ByVal AccountNum As Integer) As Integer
Return OccCat(AccountNum)
End Function
OccCat - это открытый массив целых чисел, который заполняется с помощью более раннего вызова функции. Опять же, правильные значения отображаются, если я просто поместил это в текстовое поле, поэтому проверяется, что массив заполнен правильно.
Редактировать: массив заполняется списком в верхней части отчета. Список повторяется по номеру аккаунта без фильтра. Внутри списка есть текстовое поле, содержащее этот код:
=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, я также пробовал этот фильтр на основе массива Occupancy (в данном случае> 0,85) и получил тот же результат.