首页 文章

Microsoft Access 2010 - 通过基于查询的报表中的计算字段进行筛选

提问于
浏览
0

好的,这是浓缩形式 . 我有三个主表来绘制数据:

StudentData - PK是学生的身份证号码 . 包含联系信息,其当前状态(“00”表示无,“P”表示“缓慢”,“S”表示暂停)和累计gpa数据 .

CourseData - PK是CRN . 仅包含缩写主题和课程编号(IE ECON 200)

StudentCourses - PK是一个AutoNum . StudentData和CourseData之间的多对多关系表 . 还包含特定学生 class 的统计数据(成绩,学分,等) .

所以一些示例数据看起来像:

StudentData

ID:12345678姓名:John Doe; ... [其他联系信息]; 00; CumCreditHours:100; CumCoursePoints:190

CourseData

CRN:0001;简称:ECON;课程编号:101

CRN:0002;缩写:CSCI; CourseNumber 201

StudentCourses

AutoNum:1 StudentID:12345678; CRN:0001;等级:A-;积分:3

AutoNum:2 StudentID 12345678; CRN:0002;等级:B;积分:3

在这一点上,这就是我设置的方式:

首先,运行查询,查找学生所需的所有课程,并将字母等级转换为分数值 . 基于第一个的另一个查询总计了总分和信用小时数 . 第三个查询获取这些总数,并通过将其总点数除以信用小时总数来计算GPA .

另外,运行一个查询,通过从StudentData表中获取累积点数和小时数来计算学生的累积GPA(再次将点除以小时数) .

然后,另一个查询同时接受学期GPA,累积GPA,当前状态和累积学分,并计算学生的建议操作 . 因此,对于我们的示例数据,它看起来像:

_

学期GPA:3.33;累积GPA:1.90; CurrentStatus:00; CumulativeCreditHours:100

_

我有一个公式来确定他们建议的操作设置为一系列嵌套的IIF语句,如下所示:

IIf([CurrentStatus] =“00”和[CumulativeGPA] <2和[CumulativeCreditHours]> = 12并且[CumulativeCreditHours] <= 23,“PFY”,IIf([CurrentStatus] =“00”和[CumulativeGPA]> = 1.7并且[CumulativeGPA] <= 1.99并且[CumulativeCreditHours]> = 24,“P”,IIf([CurrentStatus] =“00”和[CumulativeGPA] <2和[SemesterGPA] <2和[CumulativeCreditHours] <12,“W” ,IIf([CurrentStatus] =“00”和[CumulativeGPA]> = 2和[CumulativeGPA] <= 2.5和[SemesterGPA] <2和[CumulativeCreditHours]> = 12,“WUP”,IIf([CurrentStatus] =“00 “和[CumulativeGPA] <1.7和[CumulativeCreditHours]> = 24,”SUSP“,IIf([CurrentStatus] =”P“和[CumulativeGPA] <2和[SemesterGPA]> = 2并且[CumulativeCreditHours]> = 12,” CP“,IIf([CurrentStatus] =”P“和[CumulativeGPA]> = 2和[SemesterGPA] <2和[CumulativeCreditHours]> = 12,”SPCP“,IIf([CurrentStatus] =”P“和[CumulativeGPA] > = 2并且[CumulativeCreditHours]> = 12,“RP”,IIf([CurrentStatus] =“P”和[CumulativeGPA] <2和[SemesterGPA] <2和[CumulativeCreditHours]> = 12,IIf(IsNull([PriorSuspension] ]), “S(FD)”, “d(SD)”), “无”)))) )))))

对于我们的例子,John Doe建议的行动是'P',因为他目前的状态是00,他有超过24累积学分,他的累积gpa在1.7和1.99之间 .

现在针对这个问题:我希望能够制作一个可以按建议的操作过滤的报告 . 我已经详细介绍了我之前遇到的问题,但简而言之,就是我现在设置报告的方式(信息显示在基于StudentData表的报告中的子报告中,以提供上述内容使用StudentID的查询)不允许我这样做,因为我想要过滤的字段存在于子报表而不是主报表中(并且您无法为子报表设置过滤器属性) .

有任何想法吗?

1 回答

  • 0

    好的,我现在已经开始工作了 . 我意识到,当我计算学期GPA时,我在过程中的某个时刻通过ID将结果分组在一起 . 这允许我删除从表单中获取ID号的初始查询部分 . 由于过程中的最后一个查询通过学生ID将所有内容链接在一起,因此各个记录保存了我需要的所有信息,之后一切都落实到位 .

    我一半期待像这样简单的事情来解决我的问题,但我仍然感到失望的是,我花了很长时间才弄清楚...

    无论如何,感谢任何可能一直在考虑解决这个问题的人 .

相关问题