2012-11-26 76 views
0

我正在將其中一臺計算機扔出窗外。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或我已經用它周圍的VALUE_FIELD本身和整個表達式TO_CHAR結果,枯萎的工作方式時,在SQL語句中運行。但是,在使用視圖時,對語句的任何TO_NUMBER或TO_CHAR修改都不會在Crystal Reports中返回任何結果。

這個問題的全部問題都是我忽略的勾選框或等價物。

任何有關如何解決這個問題或我可以去尋找答案的建議將不勝感激。

+0

你想用'DECODE'語句做什麼?如果相等,則使用'VALUE_FIELD'或其他東西? – craig

+0

解碼是爲我從中提取數值的表格,它是一個傳統設計,但本質上該表格包含所有類型的值,而外鍵描述了值字段的值。例如,如果桌子上有人,人的高度,人的年齡和人的姓名都會得到自己的密鑰,然後可以通過使用聯繫人表的鍵進行搜索來使用該表,每個聯繫人獲得身高,年齡和姓名然後通過它們的關鍵來區分它們。不是很優雅,但不是我可以改變的東西。 – ashcanschool

回答

0

事實證明,Crystal Reports如何處理來自數據庫的查詢。我需要做的只是在另一個Select語句中包含SQL語句,並在該列的這個實例上應用TO_NUMBER,以便Crystal Reports將列值識別爲數字。

希望這可以幫助別人,因爲這是一個下午的可怕浪費。

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) 
+0

我確實在該字段上運行了TO_NUMBER,並通過詢問確認它的數據類型來確認它確實是一個數字。我的問題不是SQL不起作用。正是在使用TO_NUMBER時,Crystal Reports沒有顯示任何結果 – ashcanschool