显示参数的描述值

时间:2011-08-22 22:37:37

标签: crystal-reports crystal-reports-xi

在Crystal Reports v 11中,是否可以在报表上显示“参数描述”值,而不是仅显示参数值?每当我将参数拖到报表上以显示它时,只显示该值,并且我想打印描述。

注意:我正在使用Crystal 11(XI),而不是.NET Crystal Report插件。

6 个答案:

答案 0 :(得分:4)

我同意Ryan的观点 - 没有一种本机机制来抓住这些价值观。用户函数库(UFL)可能是一种值得研究的方法。

代替这一点,我有很多方法处理:

  1. 带有case语句的公式,用于将值转换为描述。
  2. 一个自定义函数,它执行相同的#1;可以通过BOE存储库与其他报告共享自定义函数
  3. 使用子报表查询可以将值转换为描述的表。将值存储在Detail部分的数组中(已抑制),然后在报表页脚中将数组加入()。如果您将子报表嵌入其自己的部分,它将根据需要进行扩展以容纳扩展列表
  4. 您可以调整#3以使用BO的查询作为Web服务(QAAWS)公开的值列表,但我没有尝试过这个。如果它没有关联的架构文档,CR将无法将XML Web服务用作数据源。

答案 1 :(得分:2)

首先,将参数值和描述连接在一起,并使用管道“|”分隔这两个值或其他较少使用的字符

实施例: CustomerID,客户名称 - > 12345 | ABC公司

第二使用 Crystal函数和数组在报表上显示说明方,即分隔符后的所有内容

Numbervar i;
Numbervar j;
StringVar Array z := "";

Local StringVar Array x := split(Join({?My Parameter},";"),";");

j := count(x);

redim preserve z[j];

for i := 1 to j do(
z[i] := right(x[i],Length(x[i])-instr(x[i],"|")) 
);

join(z,",")

第三。创建第二个函数,如上所示,将参数值返回到分隔符的左侧,以用作报告选择公式的一部分**

答案 2 :(得分:0)

我不相信有一种方法可以直接得到描述(分散在互联网周围的其他一些帖子似乎同意)。如果您有一些( - )数量的参数选项,您可以创建一个包含case语句的公式或函数,该语句将值转换为其描述。

答案 3 :(得分:0)

我为Crystal Reports能够以某种方式检索参数的描述而感到震惊,但它并未公开它可用于公式中。在我看来,被迫复制参数和描述的定义似乎是一种不好的形式,仅仅是因为在编程时不应复制任何东西。另一种替代方法(除了列出的所有方法之外)是将“值”和“描述”作为SQL数据源的值(在SQL中对其进行硬编码)。然后,您可以从所述数据源填充参数,然后将“描述”用作字段。这样,尽管有更多动人的片段,但您只有“一个事实的版本”将您的价值观映射到您的描述中。

答案 4 :(得分:0)

请参阅:1678487-如何在https://apps.support.sap.com/sap/support/knowledge/public/en/1678487

的Crystal Reports中显示参数说明而不是参数值

答案 5 :(得分:-1)

有一个新功能可以实际用于在报表上显示参数的描述。

来源:https://launchpad.support.sap.com/#/notes/2037542

我将为不需要访问此页面的用户粘贴整个文档。

Crystal Reports 2016中添加了一个新函数GetValueDescriptions(),以允许用户创建可以操作/显示参数所选值的描述的公式。

GetValueDescriptions()支持各种参数(单个和多个,离散和范围)。下面是一个公式示例,其中{?customerMultiDiscreteAndRange}是一个多范围参数:

本地字符串变量范围数组im:= GetValueDescriptions({?customerMultiDiscreteAndRange}); 本地号码Var i:= 1; 本地字符串不可用:=“”;

而我<= count(im)做 ( 如果(IncludesLowerBound({?customerMultiDiscreteAndRange} [i]))然后 (out:= out +“ [”;) 其他 (out:= out +“(”;);

如果(HasLowerBound({?customerMultiDiscreteAndRange} [i]))然后 (out:= out + GetLowerBound(im [i]));

out:= out +“ ..”;

如果(HasUpperBound({?customerMultiDiscreteAndRange} [i]))然后 (out:= out + GetUpperBound(im [i]));

如果(IncludesUpperBound({?customerMultiDiscreteAndRange} [i]))然后 (out:= out +“]”;) 其他 (out:= out +“)”; );

如果(i

i:= i + 1; );

出;

还要注意两个新函数-GetLowerBound()和GetUpperBound(),它们可用于获取正确的上下限描述。如果Maximum()和Minimum()返回交换后的描述,则这两个特别有用。

以上公式示例可轻松调整,例如展示其价值和描述,或满足更多的报告需求。

要使用这些功能,请将Crystal Reports升级到已进行增强的版本。

有关详细信息和可用补丁,请参阅“ SP补丁程序级别”部分。

对于SAP Crystal Reports,Eclipse版本:

仅从SP22开始,运行时才支持这些功能,但有以下限制:

与Eclipse相同的Eclipse运行时版本SAP Crystal Reports不支持静态多范围参数。支持动态多范围参数。 Eclipse版本的SAP Crystal Reports的嵌入式设计器中不支持用于显示描述的“值选项”。如果您具有在SAP Crystal Reports 2016中设计的带有参数“值选项”以显示描述的现有报表,则嵌入式设计器中重新修改的任何修改都将覆盖“值选项”以显示值。而是在SAP Crystal Reports(Eclipse运行时版本)中支持在SAP Crystal Reports 2016中创建的带有“值选项”以显示描述的报表。 要下载Eclipse版本的最新SAP Crystal Reports支持包:

https://wiki.scn.sap.com/wiki/display/BOBJ/SAP+Crystal+Reports+version+for+Eclipse+-+Downloads