2016-01-04 8 views
1

Мой отчет состоит из групп сотрудников. Раздел каждого сотрудника может содержать 3-5 страниц. Я хочу добавить пустую страницу после группы, если номер страницы нечетный. Причина в том, что при печати 2 страниц на одном листе и группе 3 страницы, тогда первая страница следующей группы печатается на том же листе.Добавить пустую страницу SSRS 2012 в конце группы, если номер страницы нечетный

Я добавил пустой TablixRow в конец TablixBody и добавил к нему группу с набором PageBreak. Следующий шаг - контролировать его видимость на основе номера страницы.

<TablixMember> 
         <Group Name="EmptyGroup"> 
         <PageBreak> 
          <BreakLocation>Start</BreakLocation> 
         </PageBreak> 
         </Group> 
         <Visibility> 
         <Hidden>=IIf(Globals.PageNumber Mod 2) = 0, True, False)</Hidden> 
         </Visibility> 
        </TablixMember> 

Однако у меня нет доступа к глобалам в теле отчета (только в нижнем колонтитуле). Есть ли обходной путь?

+0

Вот способ доступа к pagenumber/Total Pages в теле. http://stackoverflow.com/questions/4758793/access-page-number-in-report-body-ssrs –

+0

Не работает для меня. Он всегда показывает 1. – jlp

+0

Что всегда показывает 1. Globals.PageNumber или TotalPages или Mod? –

ответ

0

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

Вы можете рассчитывать строки каждой группы с помощью CountRows
https://msdn.microsoft.com/en-us/library/dd255215.aspx

Это не самый чистый способ, но это возможно.

+0

Спасибо, но мой отчет не основан на таблицах, это больше похоже на Документ Word – jlp

+0

Если вы знаете размер группы, независимо от того, как вы ее показываете. Вы должны иметь возможность рассчитать точный предел размера для достижения 4-й страницы. Даже если вы показываете полный текст. Как именно вы показываете данные? Это просто полный текст или вы используете прямоугольники? При работе с текстом, например, вы можете просто взять длину строки. – Oceans

0

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

Перейти к Report Properties меню/Code Tab и поставить эту функцию:

Function PgNm() As String  
    Return Me.Report.Globals!PageNumber  
End Function 

Затем вызовите функцию, чтобы получить номер страницы:

=Code.PgNm() 

Позвольте мне знать, если это может помочь вам.

+0

Всегда отображается 1 – jlp

+0

Вы уверены, что ваш отчет дает несколько страниц? Также убедитесь, что вы вызываете функцию вне группы сотрудников. –