Ms Access表或查询

问题描述 投票:-1回答:1

我有一个非常有趣的问题。

比方说,我在MS Access中有一个表,它有以下7列。

studentID, firstName, lastName, courseName, homework, grade, semester

该表每学期有3个家庭作业 并计算每个学生的家庭作业的平均数。

现在我想有另一个表查询,它的标题和第一个表的标题相同,id指向每个学生的3个家庭作业的平均数(仅指平均数)。但是当你点击第二个表的id字段时,它将打开第一个表,上面有每个学生的3个家庭作业的详细信息。

我希望你能理解我的问题。我已经完成了第一个表,但我不知道如何去做第二个表query。

先谢谢您的意见。

ms-access access-vba
1个回答
1
投票

无论你用什么程序在第一个表中发布新的记录,也需要重新计算新的平均数,并在第二个表中发布更新该学生的记录。 这样做可以使第二个表中的信息保持最新。

至于点击的部分,我只是根据你的编程经验和你可能正在做的项目,提出一个大致的建议。你可能会创建一个表格(一个屏幕)来显示第二个表格的信息。 你会使用该表的一个事件(比如 "On Dbl Click "事件)来触发在另一个表单中显示第一个表的相应记录。 需要一些VBA代码,但你必须先得到结构--你想如何显示信息? 你想为操作者提供什么样的界面? 等等。

EDIT1: 经过你的补充描述,我还是坚持我原来的想法,在第一张表(明细表)增加一条记录的时候,你会用VBA代码(我们在你的描述中还不够具体,我不能再具体了)也进行平均计算,并更新第二张表。 然后你会在第二个表上写一个报告。 报告不是交互式的,所以不会有点击报告来打开表格(据我所知),但你可以用表格来做这件事--如果你想用这种方式而不是使用报告的话。

EDIT2:

我建议采用类似这样的结构。 注意额外的 "学生 "表。 我们可以很容易地争论 "Courses "表,但我将在这个练习中跳过它。

table Students:
studentID - Short Text
firstName - Short Text
lastName - Short Text

table Homework:
studentID - Short Text
courseName - Short Text
homework - Short Text
grade - Number
semester - Short Text

table Averages:
studentID - Short Text
courseName - Short Text
avg - Number
semester - Short Text

在你的表单中,你允许编辑 "作业 "表,你可以使用一个有意义的事件(每次数据改变时都会触发--这取决于你用什么控件将数据呈现给操作者)。 这个事件需要触发VBA代码,在那里你将重新计算更新后的学生的平均数,然后更新Averages表。 如果你这样做,Averages表将始终是最新的。 然后你需要写你的报告。

至于在屏幕上 "向下钻 "到细节,你可以用一个表格向操作者显示Averages表,然后在一个事件中写一些VBA代码(比如 "在双击时")。 这段VBA代码需要检测哪条记录被选中,然后打开一个显示作业表的窗体,只对选中的学生进行过滤。

在上述所有情况下,你可能会使用查询而不是表格--这样你就可以包含学生信息(姓,名)。

© www.soinside.com 2019 - 2024. All rights reserved.