-2

Может ли один из вас, пожалуйста, объясните мне, как петля (для, в то время) циклы работ здесьSSRS пользовательского кода Loop

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

+0

Кажется, что ваш tablix не имеет группы, поэтому он показывает результат вычисления последней строки. Также обратите внимание, что вы можете заменить цикл ** FOR ** в вашем коде на 'num * 3', даже если вам не нужен специальный код, чтобы получить то, что вам нужно. Объясните лучше и добавьте образцы данных и пример ожидаемого результата. –

+0

Позвольте мне объяснить мою проблему более подробно. У меня есть набор данных, где мне нужно вычислить сумму всех значений, таких как 13, *, 16, поэтому я хочу, чтобы результат был как *. Поскольку «*» не может быть добавлено в числовые значения. В зависимости от выбранного параметра меняются номера значений строк. Я хочу, чтобы результат опубликовал 34 вместо (последняя строка Group B vallue = 16 * 3 = 54) AB apple 5 виноград * (если в некоторых случаях это 13 Апельсины 16 Мне нужен вывод, сумма всех этих значений. Есть ли какой-либо другой способ, пожалуйста, помогите мне в этом –

+1

В SSRS просто попробуйте '= SUM (CINT (Fields! B.Value))' , предполагая, что B является строковым столбцом (varchar, nvarchar, text ...). Нет необходимости использовать пользовательский код в этом. –

ответ

0

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

Public Function SafeConvert (ByVal Num As String) As String

Dim S, как Integer

Для я, как Integer = 0 до 2

с + = пит

следующая

Возврат с

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

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

1

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

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

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

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

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

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

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

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


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

=sum(iif(Fields!Q27_A_1.Value < 5, Fields!Q27_A_1.Value, 0)) 
Смежные вопросы