水晶报表喜欢 [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 码
48
到 57
是数字 [0-9]65
到 90
是大写字符 [A-Z]97
到 122
是小写字符 [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]的主要内容,如果未能解决你的问题,请参考以下文章