Экспорт нескольких именованных PDF-файлов из MS Access - PullRequest
0 голосов
/ 30 января 2020

Код:

Private Sub Command455_Click()
Dim filename As String
Dim filepath As String

filename = Me.LAST_NAME & "," & " " & Me.FIRST_NAME & "," & " " & Me.STUDENT_ID
filepath = "C:\Users\ddennis1\Desktop\" & filename & ".pdf"
DoCmd.OpenReport "Humanities_MiniDips", acViewPreview, , "[Student_ID]=Forms!DIPLOMAS_EXPRESS!STUDENT_ID"
DoCmd.OutputTo acOutputReport, "Humanities_MiniDips", acFormatPDF, filepath
MsgBox "Graduate exported", vbInformation, "Save confirmed"

End sub

Приведенная выше кодировка прекрасно работает, но экспортирует только один PDf за раз на основе идентификатора студента, отображаемого в форме.

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

Отчет называется "Humanities_Minidips", а источник записи называется "Humanites"

Я считаю, что существует какая-то Для выполнения этой задачи требуется sh.

У кого-нибудь есть идеи, как двигаться дальше в этом направлении?

1 Ответ

2 голосов
/ 30 января 2020

Вы правы, что вам нужно al oop для реализации нужного вам поведения. Вам также нужна таблица с именами и идентификаторами учеников, которую вы можете запросить, чтобы предоставить список от l oop до.

Приведенный ниже код оборачивает большую часть вашего кода в простой l oop, который принимает записи в таблице с именем «СТУДЕНТЫ» и выводит PDF для каждого студента.

' change NewButton to the name of your new button for printing all students
Private Sub NewButton_Click()
    Dim filename As String
    Dim filepath As String
    Dim db as Dao.Database
    Set db = CurrentDb
    Dim rs as Dao.Recordset
    ' change the name of the table to match your student table           vvvvvvvv
    Set rs = db.OpenRecordset("SELECT FIRST_NAME, LAST_NAME, STUDENT_ID FROM STUDENTS", dbOpenSnapshot)

    Do Until rs.EOF
        ' reference the desired field names in the current row
        filename = rs("LAST_NAME") & "," & " " & rs("FIRST_NAME") & "," & " " & rs("STUDENT_ID")
        filepath = "C:\Users\ddennis1\Desktop\" & filename & ".pdf"
        DoCmd.OpenReport "Humanities_MiniDips", acViewPreview, , " 
        [Student_ID]=" & rs("STUDENT_ID")
        DoCmd.OutputTo acOutputReport, "Humanities_MiniDips", acFormatPDF, filepath
        DoCmd.CloseReport acReport, "Humanities_MiniDips", acSaveNo
        ' This line logs the export for each student, this will help you with 
        ' troubleshooting for specific students if necessary. The log can be found
        ' by pressing Ctrl + G while in the VBA editor in Access.
        Debug.Print "PDF for " & rs("FIRST_NAME") & " " & rs("LAST_NAME") & " exported"
        ' move to the next record, CRITICAL or else you will loop forever
        rs.MoveNext
    Loop
    ' indicate that export is finished
    MsgBox "Graduates exported", vbInformation, "Save confirmed"
End sub
...