Първо трябва да използвате променливи за отчет: щракнете с десния бутон върху празното място на отчета -> Променливи -> Създайте променлива като PageCount (задайте стойност по подразбиране на 0)
След това във вашия горен или долен колонтитул -> създайте текстово поле и задайте израз ->
=Variables!PageCount.SetValue(Variables!PageCount.Value+1)
Той автоматично ще се увеличава за всяка страница. (ВАЖНО:НЕ го скривайте от горния или долния колонтитул, SetValue НЯМА да работи, ако скриете полето, така че променете шрифта на 1 или текста на бял, направете каквото и да е, просто НЕ го крийте (ще отпечата 'True', тъй като настройката се извърши))
След това можете да използвате:
=Variables!PageCount.Value
в която и да е част от тялото на вашия отчет, за да получите достъп до номера на страницата.
ВАЖНО:Моля, ОБЪРНЕТЕ ВНИМАНИЕ, че се опитах да използвам Globals!PageNumber, за да задам променливата, но в крайна сметка тя НЕ беше достъпна от тялото на отчета. Така че трябва да е нещо, достъпно както от горен/долен колонтитул, ИЛИ от основния текст.
В моя случай трябва да нулирам номера на страницата за всеки екземпляр от моята група. Така че просто задавам тригер в края на групата. (напр. проверявам дали имам връщане на моята обща стойност, защото знам за всеки край на моята група ще има общ дисплей.
Поради във функцията IIF
и частта True и False ще бъдат обработени, така че ако поставите сетери в IIF
като например по-долу:
=IIF(IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(Variables!PageCount.Value+1),Variables!PageCount.SetValue(0))
)
в крайна сметка ще имате стойност 0 през цялото време, тъй като отчетът ще проверява истинската част, след това грешната част, и двата сетера ще бъдат изпълнени (стойността ще бъде зададена два пъти)
така че имаме нужда от 2 полета и нещо като:(Трябва да скриете ненужното поле за вашите условия за проверка)
=IIF(IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(Variables!PageCount.Value+1),"")
)
Трябва да скриете това поле, когато NOT IsNothing(ReportItems!TotalBox.Value)
=IIF(NOT IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(0),"")
)
Отново трябва да скриете това поле, когато IsNothing(ReportItems!TotalBox.Value)
Разбира се, бихте могли да използвате някакъв друг начин за определяне на края на групов екземпляр, като:направете текстово поле, което съдържа САМО фиксирана стойност в края на вашата групова таблица. и го скрий. когато проверявате тригера, просто направете подобен подход като мен.
Работи добре за всички версии над 2008 R2 (включени).