1

我通常不使用水晶,但我花了将近 2 天的时间寻找一种方法来做到这一点。

问题是我需要在报告中显示多行文本,但需要在 8 行后截断并显示“更多”提示以通知用户他们需要查看其余部分详情在线。这最初是通过将数据存储为已经按大小换行的单独行并使用公式计算行数并有条件地显示单独的“更多”字段来处理的。他们已经在文本中添加了使用 html 的功能,但这使得当前的处理方式错误地换行并显示 html 标记。

我编写了一个数据库函数来将文本组合到一个字段中,并使用 HTML 文本解释在其他 7 个不限制文本长度的报告上正确显示它,并且最大行数非常适合限制文本大小,我只是无法弄清楚如何在需要时显示“更多”提示。

任何建议将不胜感激。

4

2 回答 2

0

理想情况下,DB 字段的属性将返回其显示的行数。不幸的是,没有这样的财产。

您可以尝试计算行结束字符的数量(例如回车、换行)。如果它们 > 7,则显示超链接。在 HTML 情况下,您必须计算结束元素(例如

)。您可以使用RegEx UFL来更轻松地识别元素。

可能最简单的方法是到数据库计算行数并将其作为另一个字段返回。使用此字段隐藏/显示超链接。

于 2012-05-08T12:12:42.437 回答
0

脾气暴躁的极客,

如果您的数据库函数现在将文本组合到一个字段中,这是否意味着仍然存储带有分隔行的原始方式?如果是这样,为什么不添加另一个名为“行数”的计算字段来计算旧的基于行的数据?

所以你仍然有你的新组合 HTML 字段这个新字段,当'line-count > x'时你可以使用它来显示'更多'按钮?

或者,另一种选择可能会起作用,但会有点棘手。也就是当字段长度超过x时,使显示更多按钮触发的公式。问题是没有显示 html 标记,并且大量使用它会扭曲显示“更多”按钮之前所需的文本量。换句话说,一个大量使用标记(和标签)的字段可能会比它应该更早地强制“更多”按钮。除非您可以以某种方式使您的“行数”计算字段排除标记或使长度计算相同。

如果 MSSQL 或 Crystal Reports 可以运行正则表达式来去除标记,这将是可能的。

如果以上都不起作用,我唯一能建议的另一件事是研究 UDF。Crystal 允许您加载您编写的外部库。这些将读取您编写的函数并将它们显示在 Crystal 内部的函数列表中。如果你这样做,那么你可以很容易地编写一个例程来剥离 HTML 并计算何时应该显示更多按钮。

祝你好运。

于 2012-05-08T10:17:35.270 回答