小弟寫了一個 ACCESS 資料庫來記錄學生的成績
謝謝各位老師的回覆,小弟錄製了一段影片,希望能讓各位高手更了解小弟遭遇的問題,再次感謝大家的回覆...
https://youtu.be/3-xeuiY23L4
做了一個範例檔
我沒用到 VBA,主要是:
這樣的話就會以學生姓名分開列印到不同的頁面了
一、先透過VBA抓出你「你已選的班級」資料庫所有學生的姓名
參考資料:
https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/database-openrecordset-method-dao
抓資料庫
Dim dbs As DAO.Database
Dim rsSQL As DAO.Recordset
Dim strSQL As String
Set dbs = CurrentDb
'Open a snapshot-type Recordset based on an SQL statement
strSQL = "SELECT * FROM Table1 WHERE Field2 = 33"
Set rsSQL = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
array_student(1, 1) = rsSQL![name]
不想用SQL
直接用查詢表也可
Set rsQuery = dbs.OpenRecordset("qryMyQuery", dbOpenDynaset)
array_student(1, 1) = rsQuery![name]
二、在VBA寫一個函數給查詢準則(where那裡)
VBA
Public student_name
Public Function 姓名()
姓名 = student_name
End Function
查詢資料表準則裡
Like "*" & 姓名() & "*"
三、作一個迴圈遍歷整個班級(王小明、李大同……),並列印成PDF
參考資料:
https://stackoverflow.com/questions/34799300/simple-vba-code-to-export-access-report-to-saved-pdf-file-when-code-is-run
輸出PDF
DoCmd.OutputTo acOutputReport, "Employee1", _
acFormatPDF,"C:\Users\desktop\PDFs\Report1.pdf"
因為你有做第二個步驟。
所以迴圈內簡簡單單讓它student_name = "資料庫的姓名"
就能幫你找學生(等同你影片裡選第二個下拉的動作)
以上不到30行程式碼,就結束了。
因為東西在你手上,我們沒辦法幫你寫,你得自已去摸索。