在Filemaker 12 List()结果中格式化数值

时间:2013-07-17 14:18:39

标签: report filemaker

我正在使用List()来检索一个数字字段,我随后通过文本字段中的合并变量在报表视图上显示该字段。显示的数据是在特定日期从事特定工作的员工列表,以及他们在各种分类下工作的小时数(正常,加班,不可计费,不可计费的加班等)。小时数是从另一个表中提取的所有计算字段,但它们需要以数字方式存储。

每列都有自己的文本字段:

| <<$$Name>> | <<$$normalHours>> | <<$$otHours>> | ...

提供如下输出:

Jim Jones           8      2
Ralph Ryder      4.25      0
Foo McBar          10    2.5

字段高度需要是动态的,因为可能会显示1到10个左右的员工。

问题是我希望始终显示带小数点后两位的小时字段:

Jim Jones         8.00      2.00
Ralph Ryder       4.25      0.00
Foo McBar        10.00      2.50

通过Inspector通常是微不足道的 - &gt;单值字段的数据,也许它仍然是微不足道的 - 但我只是没有看到它。

我在填充字段时尝试使用SetPrecision(小时; 2),并且在创建列表变量时也(尽管我认为它不会真正起作用):

$$ normalHours = SetPrecision(List(laborTable :: normalHours); 2)

在这两种情况下,我仍然看到整数的纯整数输出,并且在任何情况下都没有尾随零。

如果我能提供任何可能有用的进一步信息,请告诉我。

2 个答案:

答案 0 :(得分:0)

您可以尝试一些事项:

自动输入计算替换现有值

您可以将normalHours字段更改为自动输入计算,取消选中“不替换现有值”,并将计算设置为以下内容:

Let ( [
    whole = Int ( Self ) ;
    remainder = Abs ( Self ) - Abs ( whole )
] ;
    Case ( remainder = 0 ;
        whole & ".00" ;
        Self )
)

这将在您的字段中为任何整数添加“.00”。这应该稍后通过List()函数。

新计算字段

或者,如果您不想自动修改现有数字,可以使用非常类似的计算创建一个新的计算字段:

Let ( [
    whole = Int ( normalHours ) ;
    remainder = Abs ( normalHours ) - Abs ( whole )
] ;
    Case ( remainder = 0 ;
        whole & ".00" ;
        normalHours )
)

然后你将在List函数中使用该计算字段,而不是normalHours字段。

对于更复杂的字段格式,您还可以使用这样的自定义函数:http://www.briandunning.com/cf/945

答案 1 :(得分:0)

您可以用门户网站替换它吗?

如果没有,则尝试在合并文本字段本身上设置格式。它也可以有格式化;每种数据类型只有一种变体,但在您的情况下它应该足够了。