# List ( calculation )

This topic is 6458 days old. Please don't post here. Open a new topic instead.

## Recommended Posts

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 )

];

)

I think that i'll have all the field contents of a given record...but NO ! Can someone say me why ?

##### Share on other sites

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.

##### Share on other sites

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 ?

##### Share on other sites

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.

##### Share on other sites

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 )

##### Share on other sites

I think that:

GetField ( "fieldName1" ) ; GetField ( "fieldName2" ) ; GetField ( "fieldName3" )

qualifies as an expression?

##### Share on other sites

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" ) )

??

##### Share on other sites

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 (...) )

##### Share on other sites

This topic is 6458 days old. Please don't post here. Open a new topic instead.

## Create an account

Register a new account