I need help creating a script that would make a calculated-read only field change color if a condition is met. Should the script placed in the calculated event?
The fields are as follows:
CourseNum (auto sum calculates 11 numeric different fields)
A1P (numeric calculated read only field)
AP (numeric calculated read only field)
HIGHA (the sum of A1P and AP) - this is also a calculated read-only field
So the condition would be:
if CourseNum >20 and HIGHA >=50%
then change the background color of HIGHA to yellow
otherwise it should be white
Solved! Go to Solution.
Views
Replies
Total Likes
it's your if statement. The "or" is the last operation used. So, you're actually saying, "if year is 4 and (B1P+BP)>".45" OR if (B1P+BP)<".30" and CourseNum>="20", then change the background."
Try:
if (form1.#subform[0]...YearLevel == 4 & ((B1P+BP)>".45" or (B1P+BP)<".30") & CourseNum>="20")
Views
Replies
Total Likes
It should be the following script in javascript not formcalc:
//Perhaps you have to delete the % of the second value if the % it's only in the display pattern
if(CourseNum.rawValue > "20" && HIGHA.rawValue >= "50%")
{
HIGHA.fillColor = "245,245,0";
}else
{
HIGHA.fillColor = "255,255,255";
}
Hope it's helpful?
Mandy
Views
Replies
Total Likes
update - I've provided a screen shot below. I'm a newbie, so my terminology may not be correct as I describe my question.
When the user enters data in the "number of students" row - the "percent of class total" is auto-calculated. Depending on the year level, class size, and percent of class the percent range the fields in the chart belwo change colour (see screen shot). My problem is that more than one field changes colour once the data is enetered although the script specifics the year level. In the shot below only <5% should be highlighted, but the 30-45% is also highlighted because it is true (but only if the year level was 4). How can I revise the script to ensure checks the year first on the year?
The script for the 5% is as follows:
form1.#subform[0].#subform[1].#subform[2].YEAR1[2].TextField20::calculate - (FormCalc, client)
if (form1.#subform[0].#subform[1].#subform[2].Row[0].YearLevel == 1 & (EP+FP)>".05" & CourseNum>="20") then
$.fillColor = "255,225,0";
else
$.fillColor = "255,255,255";
endif
The script for the 30-45% is as follows:
form1.#subform[0].#subform[1].#subform[2].YEAR4.TextField17::calculate - (FormCalc, client)
if (form1.#subform[0].#subform[1].#subform[2].Row[0].YearLevel == 4 & (B1P+BP)>".45" or (B1P+BP)<".30" & CourseNum>="20")
then
$.fillColor = "225,225,0";
else
$.fillColor = "255,255,255";
endif
Hoping someone can shed some light as I've looked up a lot of stuff and can't find anything.
Thanks for your help.
Views
Replies
Total Likes
it's your if statement. The "or" is the last operation used. So, you're actually saying, "if year is 4 and (B1P+BP)>".45" OR if (B1P+BP)<".30" and CourseNum>="20", then change the background."
Try:
if (form1.#subform[0]...YearLevel == 4 & ((B1P+BP)>".45" or (B1P+BP)<".30") & CourseNum>="20")
Views
Replies
Total Likes
Thank you for taking the time to answer!!!!!
Views
Replies
Total Likes
No problem! Thanks for marking as the answer.
Views
Replies
Total Likes
I'm having the same issue now that my script includes more than one option from the drop-down list. Using the example above, I now have included the option of year 4,6, or 8:
form1.#subform[0].#subform[1].#subform[2].YEAR4.TextField17::calculate - (FormCalc, client)
if (form1.#subform[0].#subform[1].#subform[2].Row[0].YearLevel == "4" or "6" or "8" & ((B1P+BP)>".45" or (B1P+BP)<".30") & CourseNum>="20")
then
$.fillColor = "225,225,0";
else
$.fillColor = "255,255,255";
endif
Hope you can help.
Views
Replies
Total Likes
I'm thinking you're giving the user the option of picking 4, 6, or 8 and all of those being valid choices. If so, try parenthesis around that part of your condition.
if((form1.#subform[0]...YearLevel eq "4" or "6" or "8") & ((B1P+BP)...
I don't use Formcalc enough to tell you if using "or" like that is going to work, though. You may have to spell out the entire condition.
if ((form1.#subform[0]...YearLevel eq "4" or form1.#subform[0]...YearLevel eq "6" or ... eq "8") & ((B1P+BP)...
Thanks once again!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
You are correct (for anyone who did not understand my question) - it is a drop down-list where 3 of the 8 options have the same condition to follow.
The second suggestion of spelling out the entire condition worked like a charm.
Views
Replies
Total Likes
Views
Likes
Replies