【问题标题】:Filling different subjects for each student based on its class level根据班级水平为每个学生填写不同的科目
【发布时间】:2017-08-04 16:52:32
【问题描述】:

我正在寻求一个想法来移动我的数据库。我的数据库是关于学生成绩管理的。我有三个班级的学生(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 

其余条目依此类推。有什么想法或方法可以实现这一目标吗?

【问题讨论】:

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


    【解决方案1】:

    学生不会通过班级等级进步吗?这个数据库会包含多年记录吗?在学生表中包含此值将需要每年为每个学生更改它。也许您需要一个单独的 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。做研究和学习,那里有很多例子。当您有一些有问题的代码时,将其发布以供分析。

    【讨论】:

    • 感谢您的回复。实际上,它是一年的数据库。最后一个示例是关系记录的说明。即,当新学生进入时,将生成studentMarks。我只希望用户自动输入的主题。
    • 一张表不会是这样的结构。它看起来像报告输出。您想在分数可用于输入之前创建 StudentMarks 记录吗?将需要 VBA 代码来创建记录。
    • StudentsMarks 将被创建为每个学生的子表!!!它们通过 ID 链接为一对多关系。我只想在记录新学生时,StudentMarks表的第三列(引用SubjectName)由相应的班级填写
    • “每个学生的子表”是什么意思 - 不应该是每个学生的表。同样,需要 VBA 代码来自动创建记录。
    • 您能否提供一些如何在 vba 中实现自动化的示例?假设AllStudents是主窗体的记录源,StudentsMarks是子窗体的记录源
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 2016-07-13
    • 2012-02-06
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多