Сброс переменной кода SSRS на новой странице - PullRequest
8 голосов
/ 07 мая 2010

В SSRS 2008 я пытаюсь сохранить SUM SUM в группе, используя пользовательский код. Причина в том, что у меня есть таблица данных, сгруппированные и возвращающие суммы данных. У меня есть фильтр для группы, чтобы удалить строки, где групповые суммы равны нулю. Все работает, за исключением того, что я сталкиваюсь с проблемами с итоговыми значениями группы - это должно быть суммирование видимых итоговых значений группы, а вместо этого суммирование всего набора данных. Есть множество статей о том, как обойти это, обычно используя пользовательский код. Я создал пользовательские функции и переменные для поддержки счетчика:

Public Dim GroupMedTotal as Integer
Public Dim GrandMedTotal as Integer

Public Function CalcMedTotal(ThisValue as Integer) as Integer
    GroupMedTotal = GroupMedTotal + ThisValue
    GrandMedTotal = GrandMedTotal + ThisValue
    Return ThisValue
End Function

Public Function ReturnMedSubtotal() as Integer
    Dim ThisValue as Integer = GroupMedTotal
    GroupMedTotal = 0
    Return ThisValue
End Function

В основном CalcMedTotal получает СУММУ группы и сохраняет промежуточную сумму этой суммы. Затем в строке итогов группы я вывожу ReturnMedSubtotal, который должен дать мне накопленную сумму и сбросить ее для следующей группы. Это на самом деле прекрасно работает, за исключением - сбрасывает значение GroupMedTotal на каждом разрыве страницы. У меня нет явно установленных разрывов страниц, это просто естественный разрыв в средстве просмотра SSRS. И если я экспортирую результаты в Excel, все работает и выглядит правильно.

Если я вывожу Code.GroupMedTotal в каждой строке группы, я вижу, что она считается правильно, а затем, если группа занимает несколько страниц на следующей странице, GroupMedTotal сбрасывается и снова начинает отсчет с нуля.

Любая помощь в том, что происходит или как обойти это? Спасибо!

Ответы [ 3 ]

20 голосов
/ 30 сентября 2010

Наконец-то нашел решение сам. Вот, добавьте Shared к объявлениям переменных:

Public Shared Dim GroupMedTotal as Integer
Public Shared Dim GrandMedTotal as Integer
5 голосов
/ 21 мая 2013

Простое изменение переменных на общие не будет работать. Если вы установите их для общего доступа, они будут удвоены при экспорте в PDF / XLS / и т. Д. (Потому что он просто продолжал добавлять в существующую переменную). Вы должны сделать что-то вроде этого:

Public Shared Dim grandTotal as Decimal
Public Shared Dim costCenterTotal as Decimal
Public Shared Dim workerTotal as Decimal

Public Shared Function Initialize() 
    grandTotal = 0
    costCenterTotal = 0
    workerTotal = 0
End Function

Public Function AddTotal(ByVal b AS Decimal) AS Decimal
    grandTotal = grandTotal + b
    costCenterTotal = costCenterTotal + b
    workerTotal = workerTotal  + b
    return b
End Function

Public Function GetWorkerTotal()
    Dim ret as Decimal = workerTotal
    workerTotal = 0
    return ret
End Function 

Public Function GetCostCenterTotal()
    Dim ret as Decimal = costCenterTotal 
    costCenterTotal = 0
    return ret
End Function 

Public Function GetGrandTotal()
    Dim ret as Decimal = grandTotal
    grandTotal= 0
    return ret
End Function 
0 голосов
/ 09 мая 2010

Я не знаю, где вы это используете. но в вашем случае, на вашем месте я просто использую простое выражение для проверки видимости SUM

например, я бы использовал Right Click On Sum Box \ Select Expression \ then use IIF(SUM <> 0, sum. "")

Он работал в любом месте и не будет сбрасываться, в вашем случае у вас будет Регион, и ваш код будет сбрасываться в каждом регионе, так что вы столкнетесь с сериями, если не измените свой путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...