Пользовательский кодовый цикл SSRS

Любой из вас, пожалуйста, объясните мне, как работает цикл loop (For, While)

A      B
Apple  13
Grape  5
Orange 16  

Я написал этот код, но он здесь не работает.

Public Function SafeConvert(ByVal num As String) As String

Dim S as Integer
For i as Integer = 0 to 2
  s += num
next
Return s

End Function

Вместо добавления каждого числа SSRS добавляет только последнюю ячейку 16 * 3 раза и показывает неверный результат.

И не могли бы вы ответить на этот вопрос?

У меня есть матрица, текстовое поле которой содержит 3 значения, как рассчитать сумму всех значений для Q27_A_1 если значение меньше 5?

1

2 ответа

Решение

Да, я понимаю вашу функцию точки суммирования для выполнения этой операции. было бы очень легко добиться этого с помощью функции Sum. Но у меня есть гигантский отчет с более чем 5000 матричных блоков, и мне нужно подать заявку на него. Так что просто хочу подтвердить, работают ли здесь пользовательские коды и что не так в этом коде строк.

Открытая функция SafeConvert(ByVal num As String) как String

Dim S как целое число

Для меня как целое число от 0 до 2

s + = число

следующий

Возврат с

Конечная функция

То, что он делает, просто добавляет последнюю ячейку в 3 раза. Я хочу добавить все значение ячейки во время выполнения.

Вам не нужно использовать какой-либо пользовательский код для достижения этой цели. Если вы уверены, что все ваши строковые значения на самом деле являются числами, вы можете использовать одну из многих функций преобразования вместе с sum в вашем выражении tablix, чтобы сложить все вместе.

Для целых чисел:

=sum(cint(Fields!B.Value))

Для десятичных значений:

=sum(cdec(Fields!B.Value))

И для двойных значений:

=sum(cdbl(Fields!B.Value))

Чтобы использовать эти выражения, вам нужно будет добавить группу к вашему tablix на основе вашего набора данных и поместить эти выражения в ваш Group Total текстовое окно.


Чтобы суммировать все значения, которые меньше, чем 5, снова вам нужно иметь группу на вашем tablix, и вы можете использовать sum функция. Однако в этом случае вам нужно будет заменить любые значения 5 или более 0таким образом, они не добавляют к общему количеству sum:

=sum(iif(Fields!Q27_A_1.Value < 5, Fields!Q27_A_1.Value, 0))
Другие вопросы по тегам