2010-12-09 29 views
0

J'ai une liste d'éléments dont j'ai besoin pour apparaître dans un rapport s'ils sont balisés. Comme vous pouvez le voir par le code ci-dessous, ce n'est rien de plus qu'une liste de nombres séparés par des virgules. Le problème est que si # 1 n'est pas dans la liste, alors la liste est toujours précédée d'une virgule. Je peux déplacer les virgules jusqu'à la fin mais ensuite j'aurai le même problème après le dernier nombre si ce n'est pas le dernier nombre dans mon calcul. Est-ce que quelqu'un a une idée de comment ajuster cela afin que les virgules apparaissent seulement entre les numéros? Ce serait génial si je pouvais avoir une période après le dernier numéro aussi.Calcul de Filemaker pour afficher correctement les virgules dans une liste

// Pièces de rechange calc

Si ($ {1} = "de rechange" et panelSize ≥ 1; "1", "") &

Si ($ {2} = "de rechange" et panelSize ≥ 2; "2" , "") &

Si ($ {3} = "de rechange" et panelSize ≥ 3;", 3" , "") &

Si ($ {4 } = "Spare" et panelSize ≥ 4; ", 4"; "") &

Répondre

0

Vous allez probablement sur ce que vous faites à la dure, mais sans voir plus de détails, il suffit de changer votre calc à:

If (${1} = "Spare" and panelSize ≥ 1 ; "1, " ; "") & 

If (${2} = "Spare" and panelSize ≥ 2 ; "2, " ; "") & 

If (${3} = "Spare" and panelSize ≥ 3 ; "3, " ; "") & 

If (${4} = "Spare" and panelSize ≥ 4 ; "4, " ; "") 

Puis, après que vous pouvez pouvez changer le dernier " , "à un". " mais vous devrez peut-être vérifier combien (le cas échéant) apparaissent dans la valeur finale en premier. Utilisez la fonction Let pour placer le résultat dans une variable que vous pourrez manipuler plus tard.

5

Vous pouvez utiliser la fonction List pour cela, car elle exclut les éléments vides. Il vous suffit de transmettre vos numéros et vos chaînes vides en tant que paramètres à List, puis de remplacer les nouvelles lignes par des virgules et de virer une période au nend.

Substitute (List("1" ; "" ; "3" ; "4") ; "¶" ; ", ") & "." 

Les résultats ci-dessus dans:

1, 3, 4. 

Dans votre exemple, vous pouvez utiliser des instructions de cas comme arguments à la liste:

Substitute (List(
    Case (${1} = "Spare" and panelSize ≥ 1 ; "1") ; 
    Case (${2} = "Spare" and panelSize ≥ 2 ; "2") ; 
    Case (${3} = "Spare" and panelSize ≥ 3 ; "3") ; 
    Case (${4} = "Spare" and panelSize ≥ 4 ; "4") ; 
) ; "¶" ; ", ") & "." 
+0

Incroyable, vous venez de faire ma journée! – Michael