Ok, here’s the condensed form. I have three main tables to draw data from:
StudentData – PK is the student’s ID Number. Contains contact info, their current status (’00’ for none, ‘P’ for Probation, ‘S’ for Suspension), and cumulative gpa data.
CourseData – PK is the CRN. Contains just the abbreviated subject and the course number (IE ECON 200)
StudentCourses – PK is an AutoNum. Many-to-Many relationship table between StudentData and CourseData. Also contains stats for the particular student’s class (grade, credit hours, etc).
So some sample data would look like:
–
StudentData
ID: 12345678
Name: John Doe; …[Other contact info]; 00; CumCreditHours: 100; CumCoursePoints: 190
–
CourseData
CRN: 0001; Abbrev: ECON; CourseNumber: 101
CRN: 0002; Abbrev: CSCI; CourseNumber 201
–
StudentCourses
AutoNum: 1
StudentID: 12345678; CRN: 0001; Grade: A-; Credits: 3
AutoNum: 2
StudentID 12345678; CRN: 0002; Grade: B; Credits: 3
–
At this point, this is how I have things set up:
First, a query runs that finds all of the courses a student takes and converts the letter grades into a point value. Another query based on the first sums the point totals and the credit hours. A third query takes those totals and calculates the GPA by dividing their point total by the credit hour total.
Separately, a query runs that calculates the student’s cumulative GPA by taking their cumulative points and hours from the StudentData table (again dividing the points by the hours).
Then, another query takes both the semester GPA, cumulative GPA, current status, and cumulative credit hours and calculates the recommended action for the student. So for our example data it would look like:
_
SemesterGPA: 3.33; CumulativeGPA: 1.90; CurrentStatus: 00; CumulativeCreditHours: 100
_
I have the formula to determine their recommended action set up as a series of nested IIF statements that looks like:
IIf([CurrentStatus]=”00″ And [CumulativeGPA]<2 And [CumulativeCreditHours]>=12 And [CumulativeCreditHours]<=23,”PFY”,IIf([CurrentStatus]=”00″ And [CumulativeGPA]>=1.7 And [CumulativeGPA]<=1.99 And [CumulativeCreditHours]>=24,”P”,IIf([CurrentStatus]=”00 ” And [CumulativeGPA]<2 And [SemesterGPA]<2 And [CumulativeCreditHours]<12,”W”,IIf([CurrentStatus]=”00″ And [CumulativeGPA]>=2 And [CumulativeGPA]<=2.5 And [SemesterGPA]<2 And [CumulativeCreditHours]>=12,”WUP”,IIf([CurrentStatus]=”00″ And [CumulativeGPA]<1.7 And [CumulativeCreditHours]>=24,”SUSP”,IIf([CurrentStatus]=”P” And [CumulativeGPA]<2 And [SemesterGPA]>=2 And [CumulativeCreditHours]>=12,”CP”,IIf([CurrentStatus]=”P” And [CumulativeGPA]>=2 And [SemesterGPA]<2 And [CumulativeCreditHours]>=12,”SPCP”,IIf([CurrentStatus]=”P” And [CumulativeGPA]>=2 And [CumulativeCreditHours]>=12,”RP”,IIf([CurrentStatus]=”P” And [CumulativeGPA]<2 And [SemesterGPA]<2 And [CumulativeCreditHours]>=12,IIf(IsNull([PriorSuspension]),”S(FD)”,”D(SD)”),”None”)))))))))
For our example, John Doe’s recommended action would be ‘P’ since his current status is 00, he has over 24 cumulative credits, and his cumulative gpa is between 1.7 and 1.99.
Now for the problem: I would like to be able to make a report that can filter by the recommended action. I’ve detailed the issues I’ve had previously, but in short, the way I have the reports set up now (with the information being displayed in a sub-report inside a report that is based on the StudentData table to provide the aforementioned queries with the StudentID) doesn’t allow me to do this because the field I want to filter by exists in the sub-report and not the main report (and you can’t set the filter properties for a sub-report).
Any ideas?
Ok, I’ve got this to work now. I realized that as I was calculating the semester GPAs that I had grouped the results together by ID at some point during the process. This allowed me to remove the part of the initial query that grabbed the ID number from the form. Since the last query in the process linked everything together by student ID, the individual records held all of the information I needed and everything fell into place after that.
I half expected something simple like this to be the answer to my problem, but I’m still disappointed that it took me this long to figure it out…
Anyway, thanks to anyone who might have been thinking of possible solutions for this problem.