【问题标题】:Can you concatenate RTF in a Crystal Reports formula Field您可以在 Crystal Reports 公式字段中连接 RTF
【发布时间】:2013-11-14 16:42:36
【问题描述】:

我目前正在构建一个应用程序,为数据集中的每个用户生成一个单独的字母。信件内容通过 vb.net 应用程序进行管理,并将它们的 RTF 格式保存到数据库中。创建信函时,从数据库中提取所有内容以使用 vb.net 逻辑形成信函。

编译后,它作为参数发送到 Crystal。这很好用,将字段文本解释设置为 RTF 允许正确查看 RTF。 客户决定改为更改 Crystal 中的逻辑(编译文本的 if 语句)。

所以我所做的是创建一个包含一堆列的空白数据集,并用 RTF 填充这些列(按 ID 排序,因此除非删除段落并且没有选项,否则值永远不会改变)。这将允许我通过 {table.1} + {table.2} 等来构建一个 RTF 字符串......

这就是问题所在。在公式中构建 RTF 字符串(使用 + 或 &)时,它只显示第一个 RTF 条目。如果我将公式切换为不解释,我可以看到包含所有内容的条目的 RTF,所以我知道它就在那里。我还在公式字段中手动组合了 RTF 并遇到了同样的问题。


StringVar 输出;

output := output & "{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}}\viewkind4\uc1\pard\lang1033\f0\fs23 这是第一个测试 }”; output := output & "{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}}\viewkind4\uc1\pard\lang1033\f0\fs23 这是第二次测试 \par \par}";


输出

在这一点上,我不确定是否有其他方法可以解决这个问题,除了将所有文本移动到水晶本身内的单独公式字段然后合并。这意味着如果他们想更改文本,则必须在水晶内完成。我宁愿不走这条路,所以我正在寻找意见和建议。

【问题讨论】:

    标签: concatenation rtf crystal-reports-2010


    【解决方案1】:

    Crystal 确实支持 RTF,但它需要在 RTF 条目的第一次出现内完全形成。在我的问题中,它显示了两个单独的 COMPLETE RTF 条目。由于所有条目都有 RTF ID 标签,因此这是不可能的。如果您将上述文本复制到文本编辑器中并将其保存为 RTF,也会出现同样的问题。你只会得到第一行。这并不能解释为什么它作为一个参数而不是一个公式起作用,而是它可能如何评估每个参数以及以后如何评估(参数将来可能会失去支持)。

    要正确地将 RTF 传递给水晶,您需要两个富文本框对象。一个是临时框,另一个是构建器框,只选择格式化文本,而不是整个 RTF 内容。可以在以下位置找到一个示例:

    http://moneybaron.org/2011/08/23/vb-net-merge-rtf-documents/

    除了一些技巧,例如从 RTF 字符串中删除右大括号或重建 RTF 表,也可以使用,但是删除大括号可能会导致配置不受支持,并且重建会很快变得混乱。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多