根据班级水平为每个学生填写不同的科目

时间:2017-03-14 11:17:21

标签: database ms-access ms-access-2007 ms-access-2013

我想要移动我的数据库。我的数据库是关于学生标记管理的。我有三个班级的学生(A班,B班,C班),每个班级都有自己的科目,如下所示:

Class A:               Class B:              Class C:
Subject1               Subject4              Subject7              
Subject2               Subject5              Subject8
Subject3               Subject6              Subject9

现在。让我的表格。我有两个由studentID链接的表(一对多),第一个是“AllStudents”:

Table: AllStudents
StudentsID       StudentsNmae        ClassName

第二张表是“StudentsMarks”

Table: StudentsMarks
ID       StudentsID        SubjectName   Mark1    Mark2     Mark3

因此,对于输入的每个学生,相应的科目应列在StudentsMarks表的第三列(SubjectName)中。例如,

StudentsID       StudentsNmae        ClassName
 1                 Alex              Class A

          ID       StudentsID        SubjectName   Mark1    Mark2     Mark3
           1           1             Subject1
           2           1             Subject2
           3           1             Subject3                  

StudentsID       StudentsNmae        ClassName
 2                 Jimes              Class B

          ID       StudentsID        SubjectName   Mark1    Mark2     Mark3
           4           2             Subject4
           5           2             Subject5
           6           2             Subject6 

等等其他条目。任何想法或方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

学生不会通过班级升级吗?这个数据库是否包含多年记录?在学生表中包含此值将需要每年为每个学生更改它。也许您需要一个单独的StudentRegistration表,其中包括StudentID,Year,ClassLevel。

有一张表格可以将科目与班级相关联。最后一个示例看起来像报告输出。在报表RecordSource中包含ClassSubjects表,以便类级别可用于对记录进行排序。这对于创建级联组合框也很有用,这样可供学生选择的科目可以限制为与学生当前注册的班级相关的科目。

以编程方式添加一组记录可能会变得复杂,并且有多种方法。一种方法涉及使用建议的ClassSubjects表的SQL INSERT操作,并连接从表单上的组合框中选择的值。

CurrentDb.Execute  "INSERT INTO StudentsMarks(StudentID, SubjectID) SELECT " & Me.cbxStudentID & " AS StuID, SubjectID FROM ClassSubjects WHERE ClassID = " & Me.cbxClassID  

这是一个非常简单的示例,并不会阻止重复记录的插入。这就是代码变得复杂,验证数据的地方。这不是传统的数据库设计,需要学习相当先进的VBA和SQL。做研究和学习,有很多例子。如果您有一些有问题的代码,请将其发布以供分析。