Microsoft Access 2010 - 在基于查询的报表中按计算字段过滤
Posted
技术标签:
【中文标题】Microsoft Access 2010 - 在基于查询的报表中按计算字段过滤【英文标题】:Microsoft Access 2010 - Filtering by a caculated field in a query-based report 【发布时间】:2012-03-20 10:42:13 【问题描述】:好的,这是精简的形式。我有三个主要的表可以从中提取数据:
StudentData - PK 是学生的 ID 号。包含联系信息、他们的当前状态(“00”表示无,“P”表示试用期,“S”表示停学)和累积 gpa 数据。
CourseData - PK 是 CRN。仅包含缩写的主题和课程编号 (IE ECON 200)
StudentCourses - PK 是一个 AutoNum。 StudentData 和 CourseData 之间的多对多关系表。还包含特定学生班级的统计数据(成绩、学分等)。
所以一些示例数据看起来像:
-
学生资料
ID:12345678 姓名:约翰·多伊; ...[其他联系方式]; 00; CumCreditHours: 100; CumCoursePoints: 190
-
课程数据
CRN: 0001;缩写:经济;课程编号:101
CRN: 0002;缩写:CSCI;课程编号 201
-
学生课程
自动编号:1 学生编号:12345678; CRN: 0001;等级:A-;学分:3
自动编号:2 学生编号 12345678; CRN: 0002;等级:B;学分:3
-
此时,我的设置是这样的:
首先,运行一个查询,查找学生修读的所有课程,并将字母成绩转换为分值。基于第一个查询的另一个查询将总点数和学分时间相加。第三个查询获取这些总数并通过将它们的总分除以学分总数来计算 GPA。
另外,运行一个查询,通过从 StudentData 表中获取学生的累积分数和小时数(再次将分数除以小时数)来计算学生的累积 GPA。
然后,另一个查询同时获取学期 GPA、累积 GPA、当前状态和累积学分,并计算为学生推荐的操作。所以对于我们的示例数据,它看起来像:
_
学期GPA:3.33;累积GPA:1.90;当前状态:00;累积信用小时数:100
_
我有一个公式来确定他们推荐的操作设置为一系列嵌套的 IIF 语句,如下所示:
IIf([CurrentStatus]="00" And [CumulativeGPA]=12 And [CumulativeCreditHours]=1.7 And [CumulativeGPA]=24,"P",IIf([CurrentStatus]="00 " And [CumulativeGPA]=2 And [CumulativeGPA]=12,"WUP",IIf([CurrentStatus] ="00" And [CumulativeGPA]=24,"SUSP",IIf([CurrentStatus]="P" And [CumulativeGPA]=2 And [CumulativeCreditHours]>= 12,"CP",IIf([CurrentStatus]="P" And [CumulativeGPA]>=2 And [SemesterGPA]=12,"SPCP",IIf([CurrentStatus]="P" And [CumulativeGPA]>=2 And [CumulativeCreditHours]>=12,"RP",IIf([CurrentStatus]="P" And [CumulativeGPA]=12,IIf(IsNull ([PriorSuspension]),"S(FD)","D(SD)"),"无") )))))))))
在我们的示例中,John Doe 的推荐操作是“P”,因为他的当前状态是 00,他有超过 24 个累积学分,并且他的累积 gpa 介于 1.7 和 1.99 之间。
现在解决问题:我希望能够制作一份可以按推荐操作进行过滤的报告。我已经详细说明了我之前遇到的问题,但简而言之,我现在设置报告的方式(信息显示在基于 StudentData 表的报告中的子报告中,以提供上述使用 StudentID 的查询)不允许我这样做,因为我要过滤的字段存在于子报告中而不是主报告中(并且您不能为子报告设置过滤器属性)。
有什么想法吗?
【问题讨论】:
我建议您发布一些示例数据和模式以及推荐操作所需的计算,并摆脱几乎所有其他内容。如果有人想阅读它,它将在编辑档案中。 好主意,我马上就开始。 =) 【参考方案1】:好的,我现在可以开始工作了。我意识到,在计算学期 GPA 时,我在过程中的某个时间点按 ID 将结果分组在一起。这使我可以删除从表单中获取 ID 号的初始查询部分。由于该过程中的最后一个查询通过学生 ID 将所有内容联系在一起,因此各个记录包含了我需要的所有信息,之后一切都到位了。
我有一半期望像这样简单的事情可以解决我的问题,但我仍然很失望我花了这么长时间才弄明白......
无论如何,感谢任何可能一直在考虑解决此问题的可能解决方案的人。
【讨论】:
以上是关于Microsoft Access 2010 - 在基于查询的报表中按计算字段过滤的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Access 2010 - 外键作为下拉菜单
整个表搜索表单 - Microsoft Access 2010