Crystal Reports将字符串转换为数字

时间:2012-11-26 16:14:59

标签: oracle crystal-reports

我有一个人把电脑扔出窗外的日子。

我正在处理涉及Crystal Reports(版本10)和Oracle数据库(11g)的问题。

我从数据库中获取一个返回字符串(varcahr2(50))的视图,该字符串实际上是一个数字,当在此视图上运行基本SELECT *查询时,我将以000000000000100.00格式返回该数字。

当在Crystal Reports中使用此视图时,我可以查看字段数据,但我无法对数据求和,因为它不是数字。

我开始尝试在字段上使用ToNumber,Crystal的响应是字符串不是数字文本。好吧,我回到视图并运行TO_NUMBER,当它用于水晶时它没有返回任何结果。我还尝试在视图上运行TO_CHAR,以便我可以将该字段作为文本导入,然后执行ToNumber,但与TO_NUMBER相同,没有显示任何记录。

我已经开始了新的报道,我已经开始了新的观点。没有用。

这似乎与我如何检索视图的数据有关。

简单来说,我从一个表中提取数据,查看外键和值字段这两个字段。

SELECT PRIMARY_KEY, 
       NVL(MAX(DECODE(FOREIGN_KEY, FOREIGN_KEY_OF_VALUE_I_NEED, VALUE_FIELD)), 0)
    FROM MY_TABLE  
    GROUP BY PRIMARY_KEY

当我尝试使用TO_NUMBER或TO_CHAR修改结果时,我已经在VALUE_FIELD本身和整个表达式周围使用它,在SQL语句中运行时,这两种方式都有效。但是,在使用视图时,对语句的任何TO_NUMBER或TO_CHAR修改都不会在Crystal Reports中返回任何结果。

这整个问题都是一些我忽略的复选框或等价物。

如何解决这个问题或者我可以去寻找答案的任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:0)

我在SQL Developer中运行了这个查询:

SELECT xxx, to_number(xxx) yyy
FROM  (
  SELECT '000000000000100.00' XXX FROM DUAL
  )

导致:

XXX                 YYY
000000000000100.00  100

如果您的字段是真正的数字,您可以创建一个SQL表达式字段来进行转换:

-- {%NUMBER_FIELD}
TO_NUMBER(TABLE.VALUE_FIELD)

答案 1 :(得分:0)

结果证明Crystal Reports如何处理来自数据库的查询。我需要做的就是在另一个Select语句中包含我的SQL语句,并且在该列的实例上应用TO_NUMBER,以便Crystal Reports将列值识别为数字。

希望这可以帮助某人,因为这是一个下午的可怕浪费。