Brian Dunning's FileMaker Custom Functions

GetLayoutNumberFromID ( layoutID )

Gets the Layout order number from the layout with ID

  Average rating: 3.7 (36 votes) Log in to vote

Ulf Carlsson   Ulf Carlsson
Studentlitteratur AB
http://www.studentlitteratur.se

Share on Facebook Share on Twitter

  Sample input:
GetLayoutNumberFromID ( 2 )
  Sample output:
4

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

Use: Gets the Layout order number from the layout with ID "layoutID"

Problem: You use some kind of navigation that want to switch to another layout when a button is pressed, but you want to be able to change both layout names and layout order without the solution breaks.

Solution: Use the function GetLayoutID in combination with the function GetLayoutNumberFromID to be able to do navigation between layouts without your application breaks if layouts change names or order.

In other words: Where you save which layout name or layout number to go to, save the layout id instead and then look up which number the layout has at the moment with the function GetLayoutNumberFromID ( layoutID ).

 

Comments

pixi   pixi, berlin/germany
Aug 26, 2009
due to the nature of "PatternCount" there might be situations where the wrong layout is choosen.
if you have a layout with id "38" BEFORE the layout you look for (with id "8"), the "38" is choosen because of "8" is part of "38".

i informed the "owner" and he hopefully will change it. otherwise you can do this by yourself by simply add a return in front and at the end of the number like this:
---------
Let ( [
layoutID = ¶ & layoutID & ¶;
layoutIDs = LayoutIDs ( Get ( FileName )) ;
currentIDPosition = PatternCount (
Middle ( layoutIDs ; 1 ;
Position ( layoutIDs ; layoutID ; 1 ; 1 ) ) ;
"¶" ) + 1
];
GetAsNumber ( currentIDPosition )
)
-----------


this will make sure that you only have the value you're looking for.
 
Thomas   Thomas, Montreux, Switzerland
Mar 1, 2010
I would also add a return before and after the LayoutID's, else it doesn't work with the first or last value of the list.

Let (
[
v_layout = "¶" & layout & "¶";
v_fileName = Get ( FileName );
v_layoutList = "¶" & LayoutNames ( v_fileName ) & "¶";
v_IDList = LayoutIDs ( v_fileName );
v_position = Position ( v_layoutList ; v_layout ; 1 ; 1 );
v_currentLayoutPosition = PatternCount ( Left ( v_layoutList ; v_position ) ; "¶" )
];
GetValue ( v_IDList ; v_currentLayoutPosition )
)
 
Thomas   Thomas, Montreux, Switzerland
Mar 1, 2010
Sorry copied the wrong one :-(

Let (
[
v_layoutID = "¶" & layoutID & "¶";
v_fileName = Get ( FileName );
v_listID = "¶" & LayoutIDs ( v_fileName ) & "¶";
v_Position = Position ( v_listID ; v_layoutID ; 1 ; 1 )
];
PatternCount ( Left ( v_listID ; v_Position ) ; "¶")
)
 
Vaughan Bromfield   Vaughan Bromfield
Nov 6, 2010
ValueCount(

Left(
"¶" & LayoutIDs( Get( FileName ) ) & "¶" ;
Position ( "¶" & LayoutIDs( Get( FileName ) ) & "¶" ; "¶" & layID & "¶" ; 1 ; 1 )
)

)
 
Ulf Carlsson   Ulf Carlsson, Lund
Nov 8, 2010
Sorry did the functions a long time ago, if you can fix them please do, if not, sorry /Ulf
 

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.