Sql Crystal报告以字符形式存储在数据库中的类型转换年份
我在数据库中有一个char(4),需要与报告中的数值范围参数进行比较。具体而言,字符表示出生年份,我的报告要求用户搜索年份范围(例如1950-2013年) 如何使用记录选择在DB中键入值,然后将其与范围进行比较以生成查询 我尝试使用:Sql Crystal报告以字符形式存储在数据库中的类型转换年份,sql,casting,crystal-reports,Sql,Casting,Crystal Reports,我在数据库中有一个char(4),需要与报告中的数值范围参数进行比较。具体而言,字符表示出生年份,我的报告要求用户搜索年份范围(例如1950-2013年) 如何使用记录选择在DB中键入值,然后将其与范围进行比较以生成查询 我尝试使用: ToNumber(dbValue) >= Minimum(parameter) and ToNumber(dbValue) <= Maximum(parameter) ToNumber(dbValue)>=Minimum(参数)和ToNumber(d
ToNumber(dbValue) >= Minimum(parameter) and ToNumber(dbValue) <= Maximum(parameter)
ToNumber(dbValue)>=Minimum(参数)和ToNumber(dbValue)Crystal没有生成SQL查询的该部分,因为它不是有效的SQL语法,而是Crystal语法。你所做的一切都会起作用,只是效率低下,因为客户端而不是服务器将不得不进行记录过滤。(因此,遵循的一个好规则是在记录选择公式中使用很少(如果有的话)的Crystal函数,因为Crystal通常无法将它们转换为SQL)
而是在SQL表达式中进行类型转换。例如:
-- SQL Expression {%YearConversion}
-- Cast using valid PL/SQL syntax
to_number("table"."YearString")
现在,由于您已经在有效的SQL中完成了转换,您可以在记录选择公式中使用它,而不用担心Crystal必须进行过滤
// Sample line from record selection formula
{%YearConversion} >= {?StartDate} and {%YearConversion} <= {?EndDate}
//记录选择公式中的样本行
{%YearConversion}>={?StartDate}和{%YearConversion}您尝试了上面的代码,出现了什么问题?由于某种原因,它是从生成的SQL查询中写入的。它似乎完全跳过了这条线