Evaluate
Evaluates an expression as a calculation.
Format
Evaluate ( expression {; [field1 ; field2 ;...]} )
Parameters
expression
- any text expression or text field.
fields
- a list of fields that this function is dependent on. When these fields are modified, the calculation will update its result.
Parameters in braces { } are optional. Notice that the optional field list is enclosed in brackets [ ].
Data type returned
text, number, date, time, timestamp, container
Originated in version
7.0
Description
The optional fields
parameter is a list of fields this calculation is dependent on. If a necessary field isn't listed, modifying that dependent field won't update the result of the calculation.
Notes
- If a server-side script contains the Evaluate function, use English function names in Evaluate's calculation. Evaluate does not recognize localized function names when it is evaluated in a server-side script. See About running scripts on FileMaker Server and FileMaker Cloud.
Example 1
Evaluate(TextField)
returns 4 when TextField contains 2 + 2.
Evaluate("textfield")
returns 2 + 2 when textfield contains 2 + 2.
Evaluate(GetField("textfield"))
returns 4 when textfield contains 2 + 2.
Evaluate(TextField;[Amount])
returns .80 when TextField contains .08 * Amount and the Amount field contains 10.00.
Example 2
Evaluate( "Let ( TaxRate = .05 ;" & Tax Rate Calculation & ")" )
returns .50 when the field Tax Rate Calculation contains SubTotal * TaxRate where SubTotal is a numeric field that contains 10.00.
Example 3
The following example shows how to pass named parameters using the Evaluate
, Let
, and Get(ScriptParameter)
functions, allowing access only to variable "a"
(the example returns 6):
ScriptParameter = "a = 5; b = 10"
Evaluate("Let ( [" & Get(ScriptParameter) & "]; a + 1 )")
Example 4
The following example shows how to pass named parameters, allowing access to both variable "a"
and "b"
. The simplified first parameter makes the second parameter more complex (the example returns 6, 12):
ScriptParameter = "a = 5; b = 10"
Evaluate("Let ( [" & Get(ScriptParameter) & "]; a + 1 & \", \" & b + 2 )")
Example 5
The following example shows how to pass named parameters, while keeping the ability to check the syntax of the second parameter of the Let
function (the example returns 6, 12):
ScriptParameter = "a = 5; b = 10"
Let( [a = Evaluate("Let( [" & Get(ScriptParameter) & "]; a )"),
b = Evaluate("Let( [" & Get(ScriptParameter) & "]; b )")]; a + 1 & ", " & b + 2 )
Example 6
The Evaluate function evaluates an expression, including field values to be evaluated as a calculation formula. It also allows you to specify field dependencies so that a calculation using the evaluation function can be triggered due to changes in other fields of the same record. This function evaluates user-defined formulas. For example, you can create a formula in the Total field that computes state tax:
Evaluate(StateTaxFormula) + ShippingCost
where the StateTaxFormula field contains:
SubTotal * 1.0875
and the SubTotal field contains the subtotal before tax and shipping.
The Evaluate function has an optional second parameter, which is a field the calculation is dependent on. When the dependent field contents change, FileMaker Pro reevaluates the calculation. In the following example, the Total calculation will be reevaluated when SubTotal changes:
Evaluate(StateTaxFormula; SubTotal) + ShippingCost
The dependent parameter can also be useful in other cases. For example,
Evaluate ( "Get ( CurrentTimeStamp )" ; [ FieldB ; FieldC ] )
will store a timestamp in the calculation field whenever FieldB or FieldC changes.