【问题标题】:Crystal Reports LIKE [a-z][0-9][a-z][a-e]水晶报表喜欢 [a-z][0-9][a-z][a-e]
【发布时间】:2018-03-06 16:41:10
【问题描述】:

我正在创建一个报告来选择表中字符串字段与特定模式匹配的记录。

我需要的记录显示在一个网格中,因此我可以看到应该选择大约 50 条记录。从 Access 获取记录的查询使用 WHERE Product_Description_Short LIKE '[a-z][0-9][a-z][a-e]'

当我尝试将其放入 Crystal 选择公式时,没有返回任何记录。

"{Product_Costs.Product_Description_Short} LIKE '[a-z][0-9][a-z][a-e]'"

我需要如何调整选择公式以允许我选择与 SQL 查询中相同的记录?

删除选择公式完全显示了表中的所有记录,所以肯定是查询出错了。

【问题讨论】:

  • 匹配范围的模式可能并不简单,请查看kenhamady.com/formulas/form07.shtml
  • 如果您的 SQL 查询在 Access 中有效,为什么不在命令表中使用它而不是让 Crystal 来做呢?

标签: ms-access crystal-reports sql-like


【解决方案1】:

Crystal Reports 不支持正则表达式,但您可以使用一些字符串函数来实现您想要的。
还有一个类似的问题,其中包含指向正则表达式库的链接:
Crystal reports: is there a way to regex in crystal reports?

以下公式使用了 Crystal Reports 的一些基本字符串函数:

示例 1:

此公式适用于字符范围。这里的问题是还包括其他字符(例如像ä ö ü 这样的变音符号)。 如果这不是您想要的,那么“示例 2”应该可以工作。

stringVar productDesc := "a3xZ";

Len(productDesc)=4 And
Left(productDesc,1) In "a" To "z" And
Mid(productDesc,2,1) In "0" To "9" And
Mid(productDesc,3,1) In "a" To "z" And
Right(productDesc,1) In "a" To "z"

示例 2:

此公式适用于 ASCII 码,因此可以排除元音变音字符。

ASCII 码 4857 是数字 [0-9]
6590 是大写字符 [A-Z]
97122 是小写字符 [a-z]

stringVar productDesc := "a3xZ";

Len(productDesc)=4 And
Asc(Left(productDesc,1)) In [97 To 122, 65 To 90] And
Asc(Mid(productDesc,2,1)) In 48 To 57 And
Asc(Mid(productDesc,3,1)) In [97 To 122, 65 To 90] And
Asc(Right(productDesc,1)) In [97 To 122, 65 To 90]

所以对于第二个示例,选择公式如下所示:

Len({Product_Costs.Product_Description_Short})=4 And
Asc(Left({Product_Costs.Product_Description_Short},1)) In [97 To 122, 65 To 90] And
Asc(Mid({Product_Costs.Product_Description_Short},2,1)) In [97 To 122, 65 To 90] And
Asc(Mid({Product_Costs.Product_Description_Short},3,1)) In 48 To 57 And
Asc(Right({Product_Costs.Product_Description_Short},1)) In [97 To 122, 65 To 90]

【讨论】:

  • 嗨,垫子。这会出现在选择公式中还是作为参数/公式字段?其次,我需要将顶行的“ax32”替换为productDesc := {MyField} 还是保留为ax32?
  • @David 我已经编辑了答案并添加了选择公式的示例。我使用该变量只是为了显示一个示例值。
  • Len 部分工作正常。当我添加下一行时,Asc(Left...it 返回 0 个结果。例如,第一条记录带有 C,但报告没有选择它?
  • 它肯定可以工作。将整个代码放在公式字段中,然后将该字段添加到报告中并删除选择公式。如果Product_Costs.Product_Description_Short 符合模式,则公式字段应显示值True。如果没有,请在您的问题中添加一些示例数据。
  • 是的,这就是问题所在,我注意到在向问题添加示例数据时。现在一切正常,干杯。
猜你喜欢
  • 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
相关资源
最近更新 更多