0

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

我正在处理一个涉及 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 中返回任何结果。

整个问题有点像我忽略的勾选框或等效项。

任何有关如何解决此问题或我可以去哪里寻找答案的建议将不胜感激。

4

2 回答 2

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)
于 2012-11-26T16:40:42.470 回答
0

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

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

于 2012-11-28T11:34:03.893 回答