Mike Davis
Mike Davis

Reputation: 49

Looping in filemaker using a local variable

Been programming in C# for a little bit - trying to use file maker and I cant believe it but I cant even get a simple for loop to work.

What I want to do is simple: loop through for the amount of entries in my "amountOfRooms" field and create an entry in a table for each room.

Sounds so simple, but I cant get it to work. Right now I have this:

Set Variable[$cnt[Customers::AmountOfRooms]; value:1] 
Go to Layout["rooms"(Rooms)] 
Loop 
    Exit Loop If[$cnt = Customers::AmountOfRooms] 
    New Record / Request 
    Set Variable[$cnt; Value: $cnt + 1] 
    End Loop 
Exit Script

No new records are created. I know the script is running because it does go to my layout, but doesnt create any new records. There is a "Repetition" field for my local variable - not sure how to use that or what it means? Any thoughts on how to do this simple loop? Thanks.

Upvotes: 0

Views: 5301

Answers (1)

pft221
pft221

Reputation: 1739

Loop

Depending on your relationship, the line Exit Loop If[$cnt = Customers::AmountOfRooms] might be equal at the first iteration because you set the variable to the value three lines above it: Set Variable[$cnt[Customers::AmountOfRooms]; value:1]

There are other ways to do it, but one common technique is to have a $i variable compare against $cnt like this:

Set Variable [$cnt; Value:Customers::AmountOfRooms]
Go to Layout ["Rooms" (Rooms)]
#
Set Variable [$i; Value:1]
Loop
   Exit Loop If [$i >= $cnt]
   New Record/Request
   Set Variable [$i; Value:$i + 1]
End Loop
Exit Script []


Repetition Number

At a high level, you can think of a FileMaker variable as a 1-indexed array. So the statements:

# Set Repetition 1 of $i to 1
Set Variable [$i; Value:1]
#
# Set Repetition 2 of $j to "Second Array Position"
Set Variable [$j[2]; Value:"Second Array Position"]

Would be equivalent to:

# Set the first value of array $i to 1
$i[0] = 1;
#
# Set the second value of array $j to "Second Array Position"
$j[1] = "Second Array Position";

in some other languages.

It's worth nothing that the array comparison is not strictly apt, but it's a good way to begin thinking of them. Regardless, you don't need to worry about the repetition number in this instance. If you want to learn more, you can start here: http://www.filemaker.com/11help/html/scripts_ref1.36.15.html

Upvotes: 2

Related Questions