Jump to content
Claris Engage 2025 - March 25-26 Austin Texas ×

This topic is 6609 days old. Please don't post here. Open a new topic instead.

Recommended Posts

Posted

I am trying to build a database in Filemaker pro 8.5 like a teachers portfolio containing the average of student grades in every year from the classes of the school when grades are letters. For example:

FIRST PERIOD: A

SECOND PERIOD: B

THIRD PERIOD: A

TOTAL AVERAGE: A

TWO A AND ONE B IS A

TWO B AND ONE A IS B

TWO C AND ONE B IS C etc.

How to make this script in four fields and for unlimited records. When I add a students record in the database can adjusted to calculate in same way and in numbers.

I have just started Filemaker and it is amazing.

PASCHAL

Posted

You should translate your letter grades into numbers using a case() function, then you can use aggregate functions or summary fields to come up with their average (GPA).

Posted

First I want to thank you for your answer. I think that I need some more help if you do not mind.

If we supposed that we have three fields

grade1, grade2, grade3 and we want to take the average in a forth field named average(g1,g2,g3)we translate the letters as follows:

A=9&10

B=7&8

C=5&6

D=3&4

E=1&2

And then we build a formula like:

case("A"=9&10;B=7&8;C=5&6;D=3&4;E=1&2;)&

aggregate(grade1;grade2;grade3;)

But I think that I have exposed myself with this formula in the whole Internet! It returns zero...

I will appreciate any assistance or suggestion.

Paschal

Posted

What is 9&10, 7&8, etc? I don't get what number you're looking to get with that. BTW: the & symbol is used for concatonating text, not for doing addition, if what's what you were trying to do.

Posted

Sorry for being bizare in a way...

In the Greek Educational System, for example,students take grades for their course performance every three months (period). So we have three periods with three months each per school year. In the beginning four classes their performance in courses is represented by a letter and in two last classes their course perfomance is expresed by a number. Between letters and numbers there is always a permanent relation. This relation is:

A ~ 9 or 10

B ~ 7 or 8

C ~ 5 or 6

D ~ 3 or 4

E ~ 1 or 2

F ~ 0

So for a student that graduate from the four beggining classes we have for example in Maths:

First Period: A Second Period:A Third Period:B Final Grade is A(the average)of the perfomance in the three periods.

And for a student that graduate from last two classes we have in the same course:

First period:7 Second period:8 Third period:9 Final grade: 8 (The number average)

Consequently, In this database that I want to build it is possible to have students from small classes need to calculate the average final grade in letters and students that graduate from two last classes and need to calculate in numbers. Numbers is easy to be calculated but I have the problem to calculate the final grade when the performance symbolized by a letter.

So I hope you can understand.

I will appreciate any help.

Paschal

Posted

Well, now I know where the expression "It's Greek to me!" comes from. :)

So if your student has an "A", what would be the numerical equivelant (and don't tell me "9 or 10")?

Posted

But this is what I am trying to explain. When a student has an "A" there are two numerical equivalents. The grade "A" would be 10 but it also would be 9. The grade "B" would be 8 but it also would be 7 and so on. I think that this is make thinks more difficult...

Posted

Why don't you split the difference for the purposes of this calc, and use 9.5? That way the average for A, A, B would be 9.5 + 9.5 + 8.5 = 9.1, or an "A" average, and the average for B, B, A would be 8.5 + 8.5 + 9.5 = 8.8, or a "B" average (with the result truncated). You could use a Case() to determine the resulting letter grade from the number:

case(number >= 9; "A";

number >= 8; "B";

number >= 7; "C";

number >= 6; "D";

"F")

If you're trying to average values across the found set, the summary field won't be able to produce an average letter grade. But you can get it by using a calc with a getsummary() function on the summary field:

let( aveNum = getsummary(Average of number; BreakField);

case(aveNum >= 9; "A";

aveNum >= 8; "B";

aveNum >= 7; "C";

aveNum >= 6; "D";

"F"))

Posted

I don't think it matters what the original numerical grade was (since it's unknown anyway). You could just as well use A=5; B=4; C=3; etc., and average that.

Posted

Yeah, but if using a related Grades table, you could average them all together if they use the same numerical range (apparently Paschal is using this numerical range for some of the grades already).

Posted

Yo Ender, since when does F come after D, don't hurt the poor children, they still have E as a hope.

Posted

Yo Genx,

In the US, the lowest passing grade is D, Lower than that is Failed, which = F

Is it different in Australia?

Lee

Posted

Seriously?

That's a bit harsh, in Australia -- at least in primary school and the lower levels of high school it goes:

A = >9

B = 8

C = 7

D = 6

E = 5

F = <5

Then we switch to random grades like:

High High

Medium High

Low High

High Medium

...

Low Low

UG -- Un Graded (basically its an F)

And then at uni we get:

High Distinction

Distinction

Credit

Pass

Near Pass

Fail

Meh, you probably weren't desperate to know but... :) Sorry i just figured they'd be the same (Didn't mean to come off rude if i did).

Posted

Most of the schools use + and the - with the Alpha Grade.

The values would be something like this if I recall.

A+ = 4.5,

A = 4.25,

A- = 4.00,

B+ = 3.5,

B = 3.25,

B- = 3.00,

C+ = 2.5,

C = 2.25,

C- = 2.00,

D+ = 1.5,

D = 1.25,

D- = 1.00,

F = 0

Posted

Excuse me but I am a little confused with all the above because I am not a programmer and probably there is a misconception with what I want to do. Let me explain to you in another way:

In other programming languages as I know we can have a formula or a string like:

Condition or variable("A"=9.5, "B"=7.5, "C"=5.5)

If (digits are letters return the average in letters)

else if (digits are numbers return the average in numbers)

Or this kind

If ("A"=9.5, "B"=7.5, "C"=5.5)

getvalues from fields

If (digits are letters return the average in letters)

else if (digits are numbers return the average in numbers)

Is it possible to make something like that?

Posted

I am not aware of any programming language that would let you average letters. Averaging is an arithmetical operation. Only numbers can be averaged.

If your input data is letters, you need to start by converting them into numbers. So far, the problem with your request has been that you have not provided an UNAMBIGUOUS way to map the letters to numerical values. There's not much a computer can do here with an instruction like "A ~ 9 or 10".

Only your last post seems to finally include a one-to-one way to map the letters to numbers:

A = 9.5 ;

B = 7.5 ;

C = 5.5 ;

D = 3.5 ;

E = 1.5 ;

F = 0

If so, we can now proceed to the actual calculation, which could be:

Let ( [

grades = Grade1 & Grade2 & Grade3 ;

avg = (

9.5 * PatternCount ( grades ; "A" ) +

7.5 * PatternCount ( grades ; "B" ) +

5.5 * PatternCount ( grades ; "C" ) +

3.5 * PatternCount ( grades ; "D" ) +

1.5 * PatternCount ( grades ; "E" )

) / Length ( grades )

] ;

Case (

avg ≥ 8.5 ; "A" ;

avg ≥ 6.5 ; "B" ;

avg ≥ 4.5 ; "C" ;

avg ≥ 2.5 ; "D" ;

avg ≥ .75 ; "E" ;

"F" )

)

Note that if a grade is empty, it is not included in the calculation.

Posted

Hmmm, i figured grades would be posted in a related structure so you could do comments for reports etc. but ohhh well.

Posted

Thank you gentlemen. The two scripts work fine and I think that now Filemaker worth the money I gave... But let me do another question if you do not mind. What can we do in case we want to calculate the average only in numbers(that is easy of course) but in the same fields we can put letters to exact the average.So someone can use in same fields in the table, letters or numbers depends on the school class.

Pascal

Posted

See the attached file:

A GetAsNumber check on the grade field will tell us if a number or letter has been entered.

You might want to tack validation on to the field though.

Example2.zip

Posted

It looks great now. Thank you for all the help.Anyone who wants to do this can see the examples. I think also that many people who use filemaker pro in Education have the problem to calculate letters and numbers together.

This topic is 6609 days old. Please don't post here. Open a new topic instead.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.