Brian Dunning's FileMaker Custom Functions

LpCntIsGrtrThanVariable ( lst ; varname )

Exits loop when loop count is greater than the value count of a list (lst), allows variable name to be set dynamically

  Average rating: 4.4 (27 votes) Log in to vote

John Knight   John Knight
dB SPL
http://www.filemaker.com

Share on Facebook Share on Twitter

  Sample input:
LpCntIsGrtrThanVariable ( List ( "red" ; "green" ; "blue" ) ; "ColorCount" )
  Sample output:
Boolean Result and $ColorCount variable increments with loop

  Function definition: (Copy & paste into FileMaker's Edit Custom Function window)

Generates a variable, with a name of your choosing, and increments it by 1 with each pass of a loop.
Designed to be used with "Exit Loop If" script step to exit the loop after you've exhausted all of the values in a list.
$StuffCount <= ValueCount ( lst ) returns 0
$StuffCount > ValueCount ( lst ) returns 1
The ability to set the variable name dynamically allows you to use the same function in multiple loops in the same script, eliminating the need to clear $cnt before each loop. (Something that is necessary with using LpCntIsGrtrThan.)

Quick Example (quasi-code):
Set Variable [$values; List ( Related::field )]
Set Variable [$VariableName; Get ( LayoutName )]
Go To Object [Object Name: "portal" ]
Loop
* Exit Loop If [LpCntIsGrtrThanVariable ( $values ; $VariableName )]
Go to Portal Row [Last]
Set Field [Portal::entry; GetValue ( $values ; evaluate ( "$" & $VariableName ) )]
End Loop

This example will create an entry in the portal for each value in $values, placing that value in a field in the new portal row and will exit the loop after it has gone through all the values. (Assumes 'Creation through Relationship' is checked')

Notes:
*The 'Exit Loop If' should be placed at the beginning of the loop to set the variable before it's needed. If a 'GetValue ( $values ; evaluate ( "$" & $VariableName ) )' is placed before the variable is initialized, you will have errors.

* Allows for a numerical parameter for (lst), so you can either give a list and it will exit at ">valuecount ( lst )", or a single numerical value (example: 37) and it will exit at ">number."

* The drawback to this functionality is that, if you have a list of numerical values that turns out to have a valuecount of 1, it will view that one value as a number and will not exit until it's surpassed the value of that number (ex. 37) instead of the valuecount of the list (1).

Ways of combatting this would be to use a non-numeric field that has the same number of values or you could wrap each value in the Quote() or GetAsText() functions.

 

Comments

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Under construction. Email me your wish list for improvements.