2013-01-09 54 views
1

我有一張桌子,有大約1500名學生和他們的老師。有152名教師。一位老師的集體學生是他們的案例。我想輸出一個Excel文件,將顯示他們的情況。如果我正在做這種蠻橫的事情,那將是一件容易的事。但是,有沒有一種方法可以設置它,以便Access可以循環併爲每位教師創建一個Excel文件。除了我的學生桌外,我還有一張老師桌,裏面有所有的老師。我還爲他們分配了一個數字,以便循環可以通過它們進行計數。我理解我想要做的結構,我只是不知道最好的方式去實現它或誠實的代碼,哈哈。無論哪種方式,基本上,我在下面列出的是表中的內容。表名是學生和教師。在Access中,如何創建一個方法來從一個表創建約152個不同的文件?

Students 
Student_Number Student_Name Teacher_Number 

Teachers 
Teacher_Number Teacher_Name 

這基本上是我在這裏。我意識到,對於正常情況,使用名稱作爲連接字段是一個可怕的決定。然而,這不會比這兩個領域更大,我將不得不從頭開始每年都這樣做,因爲我們今年沒有任何關於重複名稱的問題,所以我不預期。基本上,這些表格不會改變,所以我不必擔心更新。基本上,對於這個小東西,我並不擔心正常化等。

+0

這不是數據庫設計,它是使用兩個表格將數據輸出到Excel的示例。如果學生表能夠讓你更容易,可以將學生表視爲對聯結表的查詢。 – Fionnuala

回答

2

循環遍歷教師表併爲現有查詢分配一個字符串。

Dim qdf As QueryDef 
Dim rs As DAO.Recordset 

''Make sure you have a query that can be overwritten called OutputStudents 
''or this will not work. You can create a query in VBA and do the checks 
''as to whether a query by that name exists, but this is simpler 
Set qdf = CurrentDB.Querydefs("OutputStudents") 
Set rs = CurrentDB.OpenRecordset("Teachers") 

Do While Not rs.EOF 
    ''Set the sql of a query called OutputStudents (see above) 
    qdf.SQL = "SELECT * FROM Students WHERE Teacher_Number=" & rs!Teacher_Number 

    ''Output to Excel 
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _ 
     qdf.Name, "Z:\docs\" _ 
     & Teacher_Number & ".xls", True 
    rs.MoveNext 
Loop 

或者那裏有。

相關問題