在 Crystal Reports v 11 中,是否可以在报表上显示“参数说明”值,而不是仅显示参数值?每当我将参数拖到报表上显示它时,只显示值,我想打印描述。
注意:我使用的是 Crystal 11 (XI),而不是 .NET Crystal Report 插件。
在 Crystal Reports v 11 中,是否可以在报表上显示“参数说明”值,而不是仅显示参数值?每当我将参数拖到报表上显示它时,只显示值,我想打印描述。
注意:我使用的是 Crystal 11 (XI),而不是 .NET Crystal Report 插件。
我同意 Ryan 的观点——没有本地机制来获取这些值。用户函数库 (UFL) 可能是一种值得研究的方法。
取而代之的是,我以多种方式处理此问题:
首先,将参数值和描述连接在一起,并使用竖线“|”分隔两个值 或其他较少使用的字符
示例:CustomerID、CustomerName -> 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,",")
第三。创建第二个函数,如上述函数,将参数值返回到分隔符左侧,用作报表选择公式的一部分**
我不相信有办法直接获得描述(分散在互联网上的其他几篇文章似乎同意)。如果您有少量(-ish)参数选项,您可以创建一个公式或函数,其中包含一个将值转换为描述的案例陈述。
我感到震惊的是,Crystal Reports 能够以某种方式检索参数的描述,但它并没有公开它以在公式中使用。被迫复制参数和描述的定义在我看来是一种不好的形式,仅仅是因为在编程时不应该复制东西。另一种技巧(除了列出的所有方法)是将您的值和描述作为 SQL 数据源的值(在 SQL 中硬编码它们)。然后,您可以从所述数据源填充您的参数,并且您将有可用的描述作为一个字段。这样你就只有“一个版本的真相”,将你的价值观映射到你的描述中,尽管更动人。
请参阅:1678487 - 如何在 Crystal Reports 中显示参数描述而不是参数值:https ://apps.support.sap.com/sap/support/knowledge/public/en/1678487
有一个新功能实际上可用于在报表上显示参数说明。
来源:https ://launchpad.support.sap.com/#/notes/2037542
我将为那些不必访问此页面的用户粘贴整个文档。
Crystal Reports 2016 中添加了一个新函数 GetValueDescriptions(),以允许用户创建可以操作/显示参数选定值描述的公式。
GetValueDescriptions() 支持各种参数(单个和多个、离散和范围)。下面是一个公式示例,其中 {?customerMultiDiscreteAndRange} 是一个多范围参数:
本地 stringVar 范围数组 im := GetValueDescriptions ({?customerMultiDiscreteAndRange}); 本地数字变量 i := 1; 本地字符串变量输出:=“”;
while i <= count(im) do ( if (IncludesLowerBound ({?customerMultiDiscreteAndRange}[i])) then ( out := out + "["; ) else ( out := out + "("; );
if (HasLowerBound ({?customerMultiDiscreteAndRange}[i])) then ( out := out + GetLowerBound(im[i]) );
出:=出+“..”;
if (HasUpperBound ({?customerMultiDiscreteAndRange}[i])) then ( out := out + GetUpperBound(im[i]) );
if (IncludesUpperBound ({?customerMultiDiscreteAndRange}[i])) then ( out := out + "]"; ) else ( out := out + ")"; );
if (i < count(im)) 那么 out := out + ", ";
我:=我+1;);
出去;</p>
还要注意两个新函数 - GetLowerBound() 和 GetUpperBound(),它们可用于获取正确的下限/上限描述。如果 Maximum() 和 Minimum() 返回交换的描述,这两个特别有用。
上面的公式示例可以很容易地调整,例如同时显示值和描述,或者满足更多的报告需求。
要使用这些功能,请将 Crystal Reports 升级到已进行增强的版本。
有关详细信息和可用补丁,请参阅 SP 补丁级别部分。
对于 SAP Crystal Reports,Eclipse 版本:
仅自 SP22 起,运行时才支持这些函数,但有以下限制:
SAP Crystal Reports Eclipse 运行时版本不支持静态多范围参数,与之前相同。支持动态多范围参数。SAP Crystal Reports(Eclipse 版本)中的嵌入式设计器不支持显示描述的“值选项”。如果您有一个在 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