在Access中,如何创建一个方法来从一个表创建约152个不同的文件?

问题描述:

我有一张桌子,有大约1500名学生和他们的老师。有152名教师。一位老师的集体学生是他们的案例。我想输出一个Excel文件,将显示他们的情况。如果我正在做这种蛮横的事情,那将是一件容易的事。但是,有没有一种方法可以设置它,以便Access可以循环并为每位教师创建一个Excel文件。除了我的学生桌外,我还有一张老师桌,里面有所有的老师。我还为他们分配了一个数字,以便循环可以通过它们进行计数。我理解我想要做的结构,我只是不知道最好的方式去实现它或诚实的代码,哈哈。无论哪种方式,基本上,我在下面列出的是表中的内容。表名是学生和教师。在Access中,如何创建一个方法来从一个表创建约152个不同的文件?

Students 
Student_Number Student_Name Teacher_Number 

Teachers 
Teacher_Number Teacher_Name 

这基本上是我在这里。我意识到,对于正常情况,使用名称作为连接字段是一个可怕的决定。然而,这不会比这两个领域更大,我将不得不从头开始每年都这样做,因为我们今年没有任何关于重复名称的问题,所以我不预期。基本上,这些表格不会改变,所以我不必担心更新。基本上,对于这个小东西,我并不担心正常化等。

+0

这不是数据库设计,它是使用两个表格将数据输出到Excel的示例。如果学生表能够让你更容易,可以将学生表视为对联结表的查询。 – Fionnuala

循环遍历教师表并为现有查询分配一个字符串。

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 

或者那里有。