Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

Dynamically populate text field based on result of on-the-fly calculation?

charis_dancer
Level 2
Level 2

Hello.

I am attempting to create a hazard assessment form.

I have three drop-down lists, Exposure, Probability and Severity, respectively, that assign a numeric value to each of these.

Exposure can be ranked from 5 (most severe) to 1 (least severe).

Probabiliy can be ranked from 5 (most probable) to 1 (least probable).

Severity can be ranked from 10 (most severe), 5, 4, 3 and 2 (least severe).

Risk Cassification is a numeric field whose value is dynamically determined by calculating the sum of these three values. I have this as a calculate event in FormCalc, and the field is a numeric field set as Calculated - Read Only.

I would like to assign a text value to add context to the calculated value of the Risk Classification field. This is where I'm running into difficulty. I have a text field called Classification and it is set to Calculated - Read Only.

I've tried to do this using a variety of methods and events in FormCalc and also using the Action Builder. I haven't' had any luck.

Here's what I'm trying to accomplish:

Risk Classification (calculated on the fly)
Text to display
16-20Extreme
11-15High
6-10Moderate
3-5Low

In other words, the numeric value of the calculation is displayed, and next to it, in a text field, I would also like to display the corresponding text for that rating.

I've referred to another post to come up with the following FormCalc code, invoked through a change/exit event on the Risk Classification field:

if (16 le $.rawValue le 20) then

     Classification = "Extreme";

elseif (11 le $.rawValue le 15) then

     Classification = "High";

elseif (6 le $.rawValue le 10) then

     Classification = "Moderate";

elseif (3 le $.rawValue le 5) then

     Classification = "Low";

else

     Classification = null;

endif

As I say, to this point, this code does not work.

0 Replies
Jono_Moore
Level 10
Level 10

Your syntax for figuring out the values is a little wonky. You need to test if the value is between two numbers so basically: if value >= lownumber AND value <= highnumber.

I would put the code on the Calculate event of the risk classification field - being as it is a calculated field the Change or Exit events aren't going to do anything.

(You don't need semicolons or rawvalue for FormCalc. $ equals "this" (the current field).)

if ($ ge 16 and $ le 20) then

     Classification = "Extreme"

elseif ($ ge 11 and $ le 15) then

     Classification = "High"

elseif ($ ge 6 and $ le 10) then

     Classification = "Moderate"

elseif ($ ge 3 and $ le 5) then

     Classification = "Low"

else

     Classification = null

endif

Or you could put it on the Calculate event of the field that is holding the text, in which case you would change the $ to the name of the field that has the calculated number.

Haven't tested the above code but I think it should be correct.

charis_dancer
Level 2
Level 2

It works beautifully!

I've  kept the two separate: the calculation appears in the numeric field, while I've taken your suggestion and added your code to the text field and replaced the $ with the field name.

Thank you so much!