1

Пользователь моего отчета хотел бы знать, был ли отчет уже напечатан? Если отчет уже был напечатан, пользователь хотел бы увидеть сообщение о том, что отчет уже был напечатан ранее в отчете при следующем создании отчета. Каков наилучший способ достичь этого? Заранее спасибо.Как узнать, распечатан ли отчет в SSRS?

+0

Вы нашли решение? –

ответ

0

Нет официальной документации о том, как этого достичь, но я мог бы сделать это.

Таблица ExecutionLogStorage содержит информацию об отчетах, выполненных или экспортированных.
Когда вы печатаете отчет, нажав кнопку «Печать» на панели инструментов, отчет «сгенерирован», и он регистрируется в таблице ExecutionLogStorage с Format = 'IMAGE'.

Если вы экспортируете свой отчет в виде файла TIFF, строка также генерируется с помощью Format = 'IMAGE'.

К счастью, есть также столбец ByteCount, который содержит «Размер отображаемых отчетов в байтах». согласно MSDN.

Этот столбец ByteCount содержит 0 в случае, если отчет печатается, и размер изображения, если вы делаете экспорт изображения.

Так что я в конечном итоге с помощью следующего запроса, который можно выполнить в SSRS БД:

select els.[LogEntryId], 
     c.[Name], 
     c.[Path], 
     els.[Parameters], 
     els.[UserName], 
     els.[TimeStart], 
     els.[TimeEnd] 
from [dbo].[ExecutionLogStorage] els 
left join [dbo].[Catalog] c on els.[ReportID] = c.[ItemID] 
where els.[Format] = 'IMAGE' 
and els.[ByteCount] = 0 
order by els.[LogEntryId] desc 

Я просто сохранил ключевые столбцы здесь и, конечно, вы можете вы можете адаптировать его под ваши потребности, и возможно, сделайте group by, чтобы иметь количество распечаток для каждого отчета.

Важные примечания:

  • Это сработало в моем случае, но это официально не поддерживается, так что не удивляйтесь, если он не работает для вас.
  • Это может быть очевидным для большинства людей, но это не будет работать, если пользователь печатает отчет в любой другой форме, чем нажать на отчете о печати кнопки, как:
    • Экспорт отчета в любом формате (PDF, Excel , Doc)
    • CTRL + P страница
  • Возьмите Server Properties во внимание:
    • EnableExecutionLogging должен быть установлен в true
    • по умолчанию ExecutionLogDaysKept является 60 так настроить этот номер соответственно

В вашем случае с вышеупомянутым запросом, можно добавить DataSource в отчет ориентируется на ReportServer DB, и если запрос имеет результат, соответствующий отчету, отображает сообщение.

В качестве альтернативы вы можете запланировать задание, заполняющее другую БД, которая будет использоваться для отслеживания распечатанных отчетов, и запросить эту БД в отчете.

0

При нажатии на кнопку печати, то RenderFormat.Name из отчета IMAGE (кнопка печати на самом деле делает отчет в виде TIFF до печати, так Export as TIFF file будет иметь тот же эффект)

если вы» повторно используя renderformat в качестве параметра для proc, вы можете записать тот факт, что он был напечатан, и впоследствии отобразить сообщение об этом.

Смежные вопросы