MS Access сохранить запись в формате PDF, используя идентификатор - PullRequest
0 голосов
/ 09 ноября 2018

Моя организация использует базу данных MS Access для хранения отчетов об инцидентах. У меня есть отчет под названием «Сведения о деле», и я хочу, чтобы у меня была возможность сохранить отчет, который в данный момент открыт, в формате PDF. У меня это работает по большей части, единственная проблема в том, что при сохранении PDF он сохраняет все записи, а не только просматриваемую запись.

Как это исправить, чтобы сохранить только просматриваемую запись, используя идентификатор записи?

Вот код для кнопки сохранения.

Private Sub Command1626_Click()
DoCmd.OutputTo acOutputReport, "Case Details", acFormatPDF, "G:\Police\Restricted\Saved Reports\ " & Me.txtPDFRef & ".pdf", True
End Sub

Поле «txtPDFRef» в отчете содержит следующий код, который используется для именования отчета. (Номер дела - Сотрудник - Дата сохранена)

="CR" & Format(Date(),"yy") & "-000" & [ID] & " - " & [ReportingOfficer] & " - " & Format(Date(),"yyyymmdd")

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Простейшие решения:

Вариант 1
Откройте отчет в предварительном просмотре с фильтром, затем используйте outputTo без аргумента ObjectName.

docmd.openReport "Case Details",,"id = " & id
docmd.outputTo objectType:=acOutputReport, outputFormat:=acFormatPDF, outputFile:= somefileName
docmd.close acOutputReport, "Case Details"

Вариант 2 (еще проще)
В режиме конструктора измените свойство отчетов filter, чтобы оно ссылалось на элемент управления в вызывающей форме.
Что-то вроде id = forms!someForm.idControl

0 голосов
/ 09 ноября 2018

Кажется, единственный способ - отфильтровать отчет по записи для печати. Поэтому важно определить ID записи для печати. ​​

Мне не ясно, находится ли ваша кнопка в самом отчете или, возможно, в форме.

Кнопка на самом отчете

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

Затем вы можете отфильтровать отчет, экспортировать его в pdf и восстановить фильтр «возможно, до применения».

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

Это будет код для кнопки:

Dim currentFilter As String
currentFilter = Me.Filter

Dim currentFilterOn As Boolean
currentFilterOn = Me.FilterOn

'If field type of ID is a number use this:
Me.Filter = "[ID] = " & Me.ID
'If field type of ID is a string use this:
'Me.Filter = "[ID] = '" & Me.ID & "'"

Me.FilterOn = True

DoCmd.OutputTo acOutputReport, Me.Name, acFormatPDF, "G:\Police\Restricted\Saved Reports\ " & Me.txtPDFRef & ".pdf", True

Me.Filter = currentFilter
Me.FilterOn = currentFilterOn

Кнопка на форме

Если кнопка находится, например, в форме, и вы просто хотите распечатать соответствующий отчет, то вы можете использовать этот код в этой кнопке:

Const REPORT_NAME As String = "Case Details"

Dim condition As String
'If field type of ID is a number use this:
condition = "[ID] = " & Me.ID
'If field type of ID is a string use this:
'condition = "[ID] = '" Me.ID & "'"

DoCmd.OpenReport REPORT_NAME, acViewPreview, , condition, acHidden

'You would have to provide txtPDFRef in another way, because the report isn't open yet.
DoCmd.OutputTo acOutputReport, REPORT_NAME, acFormatPDF, "G:\Police\Restricted\Saved Reports\ " & Me.txtPDFRef & ".pdf", True

DoCmd.Close acReport, REPORT_NAME

Закрывает отчет после сохранения в pdf. Имейте в виду, что вам, возможно, придется предоставить txtPDFRef другим способом. Но, возможно, он существует и в форме с тем же именем, что сразу же запустит его.

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