我想要移动我的数据库。我的数据库是关于学生标记管理的。我有三个班级的学生(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
等等其他条目。任何想法或方法来实现这一目标?
答案 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。做研究和学习,有很多例子。如果您有一些有问题的代码,请将其发布以供分析。