在Crystal Reports 2011中的多值参数中使用LIKE

时间:2014-10-27 19:54:39

标签: crystal-reports

我正在Crystal Reports 2011中开发一份报告,其中有3个子报告从3个不同的数据库中提取数据。我在主报表中有一个多值参数(字符串),它将输入值传递给具有相同多值字符串参数的3个子报表。

示例输入值为:

 P000000030,

 P000000930,

 P000001730

用户不想输入前导字母字符并在前面加零。他们想输入以下内容:

30,  930,  1730

如果用户使用以下记录选择标准将整个字符串值放入,则子报告会成功提取所有记录,但它不适用于部分字符串输入:

{?Pm-?Reference}

中的

{Command.Puchase Order}

任何人都可以建议使用子字符串作为输入来提取子报表中的数据所需的语法吗?

提前致谢!

3 个答案:

答案 0 :(得分:1)

感谢您的输入!我从每个人那里拿了一点,然后提出了以下解决方案:

  1. 在数据源中创建一个用于修剪所需值的列 - > ltrim(regexp_replace(a。“po_num”,'P',''),'0')为“Puchase Order2”
  2. 修改了我的记录选择标准以选择任一列 - > {?Pm-?参考}中的{Command.Puchase Order}或{?Pm-?Reference}中的{Command.Puchase Order2}
  3. 我非常感谢您的投入!我可以帮助您提供所需的解决方案。

答案 1 :(得分:0)

继续创建一个计算参数长度(len({?Pm-?Reference}))的公式,并将其抑制在报告标题上。然后将下面放在您的记录选择公式

right({Command.Puchase Order},{your length formula}) in [{?Pm-?Reference}]

答案 2 :(得分:0)

您只能添加"号码" [Puchase Order]版本到您的数据源...

cast(cast(right([Puchase Order], len([Puchase Order]) - 1) as int) as varchar(9)) 
as [Puchase Order Number]

...然后在选择专家中使用它。我得到没有前导P的数字,转换为int以删除前导零,然后返回varchar以进行Crystal中的字符串比较。

您可以对Crystal报表中的公式执行相同操作。然后在选择专家中引用该公式。在所有3个子报告中,下行不得不重复这一点。