Crystal 报告类似 [a-z][0-9][a-z][a-e]

Crystal Reports LIKE [a-z][0-9][a-z][a-e]

我正在为 table 中的 select 条记录创建报告,其中字符串字段与特定模式匹配。

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

然后当我尝试将其放入 Crystal select 离子公式时,没有返回任何记录。

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

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

删除 selection 公式完全显示了 table 中的所有记录,因此肯定是查询出错了。

Crystal Reports不支持正则表达式,但是你可以使用一些字符串函数来实现你想要的。
还有一个类似的问题 link 到 regex-library:
Crystal reports: is there a way to regex in crystal reports?

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

示例 1:

此公式适用于字符范围。这里的问题是还包括其他字符(例如像 ä ö ü 这样的元音变音)。 如果这不是您想要的,那么 "Example 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-codes,因此可以排除 umlaut-characters。

ASCII-codes 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]