2016-07-01 6 views
0

Я нахожусь в особой ситуации на руках, что не могу назвать это, поэтому я просто объясню это! Я работаю над базой данных File-maker pro для университета, который отслеживает студентов, которые занимаются образованием в одной из таблиц, отслеживает все стандартизированные тесты, проведенные учащимися, которые варьируются от следующих: ACT, SAT, ETS и Papa. раньше, когда я делал этот стол, все тесты стояли одни или, другими словами, вы не могли комбинировать оценки, чтобы сделать проходной класс. Теперь это изменилось с помощью двух тестов: PAPA и ETS. В порядке слов вы можете комбинировать оценки из каждого теста, чтобы пройти один класс.получение вычисленного результата из записей смешивания в той же таблице

Вот пример

позволяет просто сказать, для простоты, что вам нужно в общей сложности 10 для испытания PAPA и ETS, чтобы передать эти отдельные тест

Test Name | Reading | Writing | Math | Total | pass/fail 
-------------------------------------------------------- 
PAPA  |  2 |  2 | 2 |  6 | FAILED 
ets  |  1 |  2 | 6 |  9 | FAILED 

Так Пару недель назад .. этот человек не прошел бы там стандартного теста, но теперь это indivdual будет проходить, потому что он/она получил aa 6 в ETS Math и два 2 в Чтении и письме в PAPAS.

Вот что мой текущий расчет выглядит следующим образом:

If (
    ReadingScore ≥ BasicTest::PassReading 
    and MathScore ≥ BasicTest::PassMath 
    and WritingScore ≥ BasicTest::PassWriting ; 
    "PASSED" ; 

    If (Score >= BasicTest::QMScore ; 
    If (ReadingScore >= BasicTest::QMReading ; 
     If (MathScore >= BasicTest::QMMATH ; 
     If (WritingScore >= BasicTest::QMWriting ; 
      "PASSED" ; 
      "DOES NOT MEET WRITING REQUIREMENTS" 
     ) ; 
     "DOES NOT MEET MATH REQUIREMENTS" 
    ) ; 
     "DOES NOT MEET READING REQUIREMENTS" 
    ) ; 
    "FAILED" 
) 
) 

Так что мой вопрос здесь сегодня, как я должен подходить к этому с про применения Filemaker? Должен ли я сделать этот отчет или просто полностью перестроить таблицу?!?!?!?

+0

Это зависит от того, как выглядит ваш расчет в настоящее время, чтобы определить, прошел ли студент или нет.По всей вероятности, вам нужно будет только изменить этот расчет для учета нового требования. Это может быть уродливое вычисление, но этому может помочь использование переменных 'Let'. Можете ли вы рассказать, как выглядит текущий калькулятор? – Chuck

+0

Это код Теперь Если (ReadingScore ≥ BasicTest :: PassReading и MathScore ≥ BasicTest :: PassMath и WritingScore ≥ BasicTest :: PassWriting; "ПРОШЕЛ"; Если (Score> = BasicTest :: QMScore; Если (ReadingScore> = BasicTest :: QMReading; Если (MathScore> = BasicTest :: QMMATH; Если (WritingScore> = BasicTest :: QMWriting; "ПРОШЕЛ"; "НЕ ОТВЕЧАЕТ ТРЕБОВАНИЯМ Писательское"); «НЕ ОТВЕЧАЕТ ТРЕБОВАНИЯМ MATH ") " НЕ ВСТРЕТЕТСЯ ТРЕБОВАТЬ ЧТЕНИЕ ") " FAILED ") ) –

ответ

0

Хотя я не уверен, как именно известково совпадает с вашим вопросом (я думаю Score в вашем известково это сумма других баллов?), Я думаю, что я могу предложить некоторые указатели.

Учитывая то, что вы говорите, и то, что известково-шоу, я думаю, что следующие условия:

  • Учитывая нескольких тестов, вы заинтересованы в максимальном количестве баллов для каждой категории.
  • Каждый максимальный балл должен быть больше минимального балла от BasicTest::Pass* или BasicTest::QM*.
  • Испытатель проходит, если все их максимальные баллы превышают все минимальные баллы теста или, а максимальные баллы больше, чем BasicTest::QMScore.

Учитывая вышесказанное, я придумал следующий известково:

Let (
    [ 
    _reading_score = Max (papa_reading_score ; ets_reading_score) ; 
    _math_score = Max (papa_math_score ; ets_math_score ) ; 
    _writing_score = Max (papa_writing_score ; ets_writing_score) ; 
    _total_score = _reading_score + _math_score + _writing_score ; 

    _target_reading = Min (BasicTest::PassReading ; BasicTest::QMReading) ; 
    _target_math = Min (BasicTest::PassMath ; BasicTest::QMMath) ; 
    _target_writing = Min (BasicTest::PassWriting ; BasicTest::QMWriting) ; 

    _pass_reading = (_reading_score ≥ _target_reading) ; 
    _pass_math = (_math_score ≥ _target_math ) ; 
    _pass_writing = (_writing_score ≥ _target_writing) ; 

    _passed = (_pass_reading and _pass_math and _pass_writing) 
     or (_total_score ≥ BasicTest::QMScore); 

    _result = Case (
     _passed   ; "PASSED"        ; 
     not _pass_reading ; "DOES NOT MEET READING REQUIREMENTS" ; 
     not _pass_math ; "DOES NOT MEET MATH REQUIREMENTS" ; 
     not _pass_writing ; "DOES NOT MEET WRITING REQUIREMENTS" ; 
          "FAILED" 
    ) 
    ] ; 

    _result 
) 

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

Обратите внимание, что Max и Min может принимать множество аргументов, а также может принимать поля, которые имеют несколько значений (связанных полей в один-ко-многим или повторяющимися полями), так что если у вас есть более двух баллов или два теста на проверьте максимальные и минимальные значения, просто добавьте их как больше параметров.