GetLayoutNumberFromID ( layoutID )
Gets the Layout order number from the layout with ID
Average rating: 3.7 (36 votes) Log in to vote
Ulf Carlsson - Show more from this author
Studentlitteratur AB http://www.studentlitteratur.se |
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, 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, Germany 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, Germany 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 Nov 6, 2010 |
||
ValueCount( Left( "¶" & LayoutIDs( Get( FileName ) ) & "¶" ; Position ( "¶" & LayoutIDs( Get( FileName ) ) & "¶" ; "¶" & layID & "¶" ; 1 ; 1 ) ) ) |
||
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 | ||
Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.