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 

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):

Copy
ScriptParameter = "a = 5; b = 10"
Copy
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):

Copy
ScriptParameter = "a = 5; b = 10"
Copy
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):

Copy
ScriptParameter = "a = 5; b = 10"
Copy
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:

Copy
Evaluate(StateTaxFormula) + ShippingCost

where the StateTaxFormula field contains:

Copy
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:

Copy
Evaluate(StateTaxFormula; SubTotal) + ShippingCost

The dependent parameter can also be useful in other cases. For example,

Copy
Evaluate ( "Get ( CurrentTimeStamp )" ; [ FieldB ; FieldC ] )

will store a timestamp in the calculation field whenever FieldB or FieldC changes.