我正在开发一个简单的数据库供学生使用Microsoft Access 2010注册课程。我有4个表:学生,注册,课程和部分(1个课程可以有很多部分)。
然后,有一个标准,学生最多只能参加5门课程。因此,我可以知道在哪里以及如何包含此约束?我不知道如何使用Macro。请帮帮我!
不过,我的关系是:学生 - >注册< - 部分< - 课程答案 0 :(得分:2)
您可以使用[注册]表格中的更改前data macro来完成目标。
最简单的方法是使用DCount()
函数来计算表中的现有行:
这将适用于从Microsoft Access本身执行的INSERT / UPDATE操作,但不幸的是,它将失败 ... ...
函数'DCount'对数据宏中使用的表达式无效。
...如果我们尝试从外部程序(如C#或VB.NET应用程序)更新表。
更强大的解决方案是在Access中创建名为[CourseCountsByStudent]的已保存查询
SELECT Register.StudentID, Count(Register.CourseID) AS CountOfCourseID
FROM Register
GROUP BY Register.StudentID;
使用查询而不是DCount()
函数
这种方法适用于早期失败的情况
表格中的样本数据
[课程]
courseid course
-------- ---------------------------------------
BC2402 Data Management & Business Intelligence
[Course_Sections]
sectiontid courseid
---------- ---------
BC2402A BC2402
BC2402B BC2402
BC2402C BC2402
[注册]
studentid sectionid
--------- ---------
U1233333K BC2402C
以下数据宏代码将检查学生是否已在课程的其他部分注册。
尝试添加另一个[注册]记录,如下所示
studentid sectionid
--------- ---------
U1233333K BC2402C
U1233333K BC2402A
将返回错误
学生已在“BC2402C”部分注册。