Microsoft Access 2010 - фильтрация по заполненному полю в отчете на основе запросов - PullRequest
0 голосов
/ 20 марта 2012

Хорошо, вот сокращенная форма.У меня есть три основные таблицы для извлечения данных:

StudentData - PK - это идентификационный номер студента.Содержит контактную информацию, ее текущий статус («00» для ни одного, «P» для пробации, «S» для приостановки) и кумулятивные данные gpa.

CourseData - PK - CRN.Содержит только сокращенный предмет и номер курса (IE ECON 200)

StudentCourses - PK - это AutoNum.Таблица отношений «многие ко многим» между StudentData и CourseData.Также содержит статистику по конкретному классу учащегося (класс, кредитные часы и т. Д.).

Таким образом, некоторые примеры данных будут выглядеть так:

-

StudentData

ID: 12345678 Имя: Джон Доу;... [Другая контактная информация];00;CumCreditHours: 100;CumCoursePoints: 190

-

CourseData

CRN: 0001;Аббревиатура: ECON;Номер курса: 101

CRN: 0002;Аббревиатура: CSCI;CourseNumber 201

-

StudentCourses

AutoNum: 1 StudentID: 12345678;CRN: 0001;Оценка отлично-;Кредиты: 3

AutoNum: 2 StudentID 12345678;CRN: 0002;Оценка: B;Кредиты: 3

-

На этом этапе я настраиваюсь следующим образом:

Сначала выполняется запрос, который находит всекурсы, которые студент изучает и преобразует буквенные оценки в баллы.Другой запрос, основанный на первых суммах, суммирует баллы и кредитные часы.Третий запрос берет эти итоги и вычисляет средний балл путем деления их общей суммы баллов на общую сумму кредитного часа.

Отдельно выполняется запрос, который вычисляет совокупный средний балл студента, беря их совокупные баллы и часы из таблицы StudentData (снова деление баллов на часы).

Затем другой запрос берет как GPA за семестр, накопленный GPA, текущий статус и накопленные кредитные часы, так и вычисляет рекомендуемое действие для студента.Поэтому для данных нашего примера это будет выглядеть так:

_

SemesterGPA: 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)"), "None")))))))))

Для нашего примера рекомендуемым действием Джона Доу будет 'P', посколькуего текущий статус - 00, у него более 24 накопительных кредитов, а его совокупный gpa - от 1,7 до 1,99.

Теперь к проблеме: я хотел бы иметь возможность сделать отчет, который можно отфильтровать по рекомендуемому действию.Я подробно описал проблемы, которые у меня были ранее, но вкратце, то, как я настраиваю отчеты сейчас (информация отображается в подотчете внутри отчета, который основан на таблице StudentData, чтобы обеспечить вышеупомянутыезапросы с StudentID) не позволяют мне сделать это, потому что поле, по которому я хочу фильтровать, существует в дополнительном отчете, а не в основном отчете (и вы не можете установить свойства фильтра для подчиненного отчета).

Есть идеи?

1 Ответ

0 голосов
/ 21 марта 2012

Хорошо, теперь у меня это работает. Я понял, что, вычисляя средний балл за семестр, я сгруппировал результаты по идентификатору в какой-то момент в процессе. Это позволило мне удалить часть исходного запроса, которая захватила идентификационный номер из формы. Поскольку последний запрос в процессе связывал все вместе по идентификатору студента, отдельные записи содержали всю необходимую мне информацию, и после этого все стало на свои места.

Я почти ожидал, что что-то простое, как это, будет ответом на мою проблему, но я все еще разочарован тем, что мне потребовалось так много времени, чтобы понять это ...

В любом случае, спасибо всем, кто мог подумать о возможных решениях этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...