自然地打破字符串而不是使用Can Grow

时间:2017-11-14 21:58:18

标签: crystal-reports

我的字符串有时长于我分配的表格上的空格。我遇到的问题是我无法使用" can grow"功能让它转到第二行,因为我有后续行作为详细子部分。

所以我想的是,如果我能弄清楚如何自然地(即在空间上)打破界限,类似于"可以如何生长"会打破这条线,通过一个公式,然后我可以根据是否显示或抑制后续细节子部分创建一个匹配第二,第三等行的公式。

即: 详情A - 有第一行 细节B - 可能有文字,可能会被压制 细节C - 可能有文字,可能会被删除 细节D - 可能有文本,可能会被抑制。

所以我可以创建一个公式,所以如果没有抑制细节B,那么第二行显示在细节B下。有些奇特的if语句(或其他方法?)我可以在细节B和/或C上显示后续行和/或D,取决于内容,因此可以显示整个字符串。我还没弄明白如何打破自然界中的初始字符串"就像自动换行一样。

Overview of report layout

DevLibSubType是可能比空格更长的字段,我希望能够自动换行。 详细信息B,C和D中的子报表是可能有也可能没有需要打印信息的子报表。

1 个答案:

答案 0 :(得分:0)

您可以使用4个公式实现此效果,但您需要为每一行指定适当数量的字符。 (理论上你可以单独计算每个字母的长度,但那方式过度杀伤。)因此,假设每行100个字符恰到好处。

您的详细信息公式可能如下所示:

LEFT({yourString},100)

详情B可能如下:

IF LEN({yourString}) > 100 THEN MID({yourString},101,100)

详情C将如下:

IF LEN({yourString}) > 200 THEN MID({yourString},201,100)

等等。如果要根据空格或标点符号断开线条,可以通过向后迭代字符来添加其他子句,直到遇到其中一个。然后将生成的长度推送到共享变量中,以供下一个使用的公式。