Кажется, единственный способ - отфильтровать отчет по записи для печати.
Поэтому важно определить 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
другим способом. Но, возможно, он существует и в форме с тем же именем, что сразу же запустит его.