Crystal Reports - 格式化交叉表格单元格

时间:2012-07-13 05:27:43

标签: crystal-reports

我有一个我在交叉表中显示的值表。原始数据如下所示:

  | Row | Col | Value | Format |
--+-----+-----+-------+--------+
1 |  A  |  X  | 1.234 | 0      |
2 |  A  |  Y  | 3.456 | 0.0    |
3 |  B  |  X  | 5.678 | 0.00   |
4 |  B  |  Y  | 7.890 | 0.000  |

我在交叉表中(在报告标题中)显示它,使用平均摘要,如下所示:

  |   X   |   Y   |
--+-------+-------+
A | 1.234 | 3.456 |
B | 5.678 | 7.890 |

(我已经压制了总数)

我想根据源数据的Format列更改每个单元格中的小数位数。输出应如下所示:

  |   X   |   Y   |
--+-------+-------+
A |   1   |  3.4  |
B | 5.67  | 7.890 |

我创建了一个基于此字符串返回小数位数的公式:

Local NumberVar dotPosition;
dotPosition := InStr({Table.Format}, ".");

If dotPosition = 0 Then
    // No dot, so no decimal places
    0
Else
    Length({Table.Format}) - dotPosition

包含摘要的单元格的Decimals属性设置为使用此公式(使用右键单击,格式字段...)。

问题是,它似乎只使用第一条记录的公式结果,即我得到输出(带有舍入)

  |   X   |   Y   |
--+-------+-------+
A |   1   |   3   |
B |   6   |   8   |

有没有办法让它使用计算单元格的记录计算每个单元格的公式?

我尝试过,作为测试(在生产中不可能),在表中添加一个Decimals列,并将Decimals格式直接设置为此({Table.Decimals}),但我得到相同的结果。< / p>

如果重要的话,每个行/列对几乎总会有一个表记录。如果有多个,则Format列对于每个都是相同的。

0 个答案:

没有答案