Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Crystal报告以字符形式存储在数据库中的类型转换年份_Sql_Casting_Crystal Reports - Fatal编程技术网

Sql Crystal报告以字符形式存储在数据库中的类型转换年份

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

我在数据库中有一个char(4),需要与报告中的数值范围参数进行比较。具体而言,字符表示出生年份,我的报告要求用户搜索年份范围(例如1950-2013年)

如何使用记录选择在DB中键入值,然后将其与范围进行比较以生成查询

我尝试使用:

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查询中写入的。它似乎完全跳过了这条线