Brian Dunning's FileMaker Custom Functions

LpCntIsGrtrThan ( lst )

Exits loop when loop count is greater than the value count of a list (lst)

  Average rating: 4.5 (31 votes) Log in to vote

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

Share on Facebook Share on Twitter

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

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

Generates the $cnt variable 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.
$cnt <= ValueCount ( lst ) returns 0
$cnt > ValueCount ( lst ) returns 1

Quick Example (quasi-code):
Set Variable [$values; List ( Related::field )]
Go To Object [Object Name: "portal" ]
*Set Variable [$cnt]
Loop
* Exit Loop If [LpCntIsGrtrThan ( $values )]
Go to Portal Row [Last]
Set Field [Portal::entry; GetValue ( $values ; $cnt )]
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:
*It's a good idea to clear the '$cnt' variable before entering the loop, and it's essential if you utilize the function in multiple loops in the same script, since it will use the same variable that can't be cleared within the function without destroying the functionality.

*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 ; $cnt )' is placed before the variable is initialized, you will have errors.

* Has been updated to allow for a numerical parameter, 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 adding 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.