Raybaudi Posted September 23, 2006 Posted September 23, 2006 Hi all friends I have a problem with the List( ) function of FM 8.5. The help on line says: List function Format List(field{;field...}) Parameter field - any related field, repeating field, or [color:red]set of non-repeating fields; [color:red]or an expression that returns a field, repeating field, or [color:red]set of non-repeating fields. So, if I have a field (FieldContents) with a calc like this: Let([ fieldNames = Substitute ( ¶ & FieldNames ( Get(FileName) ; Get(LayoutName) ) & ¶ ;["FieldContents¶";""]; [¶ ; " ; "] ); adjustedFieldNames = Middle ( fieldNames ; 4 ; Length ( fieldNames ) - 6 ) ]; list ( adjustedFieldNames ) ) I think that i'll have all the field contents of a given record...but NO ! Can someone say me why ?
The Shadow Posted September 23, 2006 Posted September 23, 2006 The function doesn't take field-names, it takes real fields. If you have fields A and B, you can use List with a calculation of: List ( If ( IsEmpty©; A; B ) ) I think what it means for the set is that you can specify as many as you like (but explicitly) List(A,B,C,D,E) Hope this helps.
Raybaudi Posted September 23, 2006 Author Posted September 23, 2006 Hi so what is the difference from: set of non-repeating fields ( like: List(A;B;C;D;E) ) & an expression that returns a set of non-repeating fields ( the above calculation is an expression that returns a set of non-repeating fields ) ?? Can someone give me a working example of List( ) using as parameter an expression that returns a set of fields ?
comment Posted September 24, 2006 Posted September 24, 2006 Hi Daniele - I think you're missing the point. Your parameter, adjustedFieldNames, evaluates to a text string - not a field reference. So at the end you have List ( "A ; B ; C ; D" ). Try using GetField() or Evaluate() to turn the text string/s into field reference/s.
Raybaudi Posted September 24, 2006 Author Posted September 24, 2006 Hi comment just do it ! This seems to work, as unstored calc: Let([ fieldNames = Substitute ( FieldNames ( Get ( FileName ) ; Get ( LayoutName ) ) & ¶ ; [ "fieldContents¶" ; "" ] ; [ ¶ ; " ; " ] ); listFieldNames = "List ( " & Middle ( fieldNames ; 1 ; Length ( fieldNames ) - 3 ) & " )" ]; Evaluate ( listFieldNames ) ) BTW: the question remains: Can you give me a working example of List( ) using as parameter an expression that returns a set of fields ? ( as the help on line says )
comment Posted September 24, 2006 Posted September 24, 2006 I think that: GetField ( "fieldName1" ) ; GetField ( "fieldName2" ) ; GetField ( "fieldName3" ) qualifies as an expression?
Raybaudi Posted September 24, 2006 Author Posted September 24, 2006 Huuu ! Isn't more simple, if we know the fieldNames, to write: List ( A ; B ; C ) and not List ( GetField ( "A" ) ; GetField ( "B" ) ; GetField ( "C" ) ) ??
comment Posted September 24, 2006 Posted September 24, 2006 Well, yes, but it's just an example - the text expression could come from another expression, for instance: GetField ( gSelectField1 ) ; GetField ( gSelectField2 ) ; GetField ( gSelectField3 ) or, closer to your original problem: GetField ( MiddleValues (...) )
Recommended Posts
This topic is 6636 days old. Please don't post here. Open a new topic instead.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now