水晶报表喜欢 [a-z][0-9][a-z][a-e]

Posted

技术标签:

【中文标题】水晶报表喜欢 [a-z][0-9][a-z][a-e]【英文标题】:Crystal Reports LIKE [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 来做呢? 【参考方案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。如果没有,请在您的问题中添加一些示例数据。 是的,这就是问题所在,我注意到在向问题添加示例数据时。现在一切正常,干杯。

以上是关于水晶报表喜欢 [a-z][0-9][a-z][a-e]的主要内容,如果未能解决你的问题,请参考以下文章

会话 id 太长或包含非法字符,有效字符为 a-z、A-Z、0-9 和 '-,'

多个 RegEx 否定匹配

常用正则表达式

js简单校验form表单

邮箱正则表达式

查找包含非 [a-z] 或 [0-9] 字符的标签