2012-10-02 157 views
2

我一直有與使用的Crystal Reports通過PostgreSQL的ODBC數據源提取數據相當麻煩的問題。看起來我有一個布爾字段,它在數據庫專家中顯示爲布爾值,並且在Crystal報表中幾乎無處不在。我有一個if語句,我正在嘗試使用它,它將無法正常工作,或者在使用它時發生錯誤。當我瀏覽的數據,或者是1或0,並且與5. 試圖解決這一問題一直是個問題,至少可以說長度的字符串。水晶報表:布爾問題

這一個不工作(總是從客戶端,而不是client_contact拉名)

if ({client_contact.bill_to_contact} = "1") Then 
trim({client_contact.given_name} + ' ' + {client_contact.initial}) + ' ' + UpperCase({client_contact.surname}) 
else 
trim({client.given_name} + ' ' + {client.initial}) + ' ' + UpperCase({client.surname}) 

這一個錯誤出來說,它需要在bill_to_contact一個布爾值(這是一個布爾值)。

if {client_contact.bill_to_contact} Then 
trim({client_contact.given_name} + ' ' + {client_contact.initial}) + ' ' + UpperCase({client_contact.surname}) 
else 
trim({client.given_name} + ' ' + {client.initial}) + ' ' + UpperCase({client.surname}) 

我試過倍當量功能我有CR版本12.0.0.683。

回答

1

原來,這是與我使用數據庫的ODBC驅動程序的問題。 它打開了「布爾人作爲Chars」的設置。 修正它,像一個魅力工作。

大部分無論如何感謝的類型轉換祕訣!我相信它們在道路上會很有用。

2

嘗試改變第二函數:

if CBool(CDbl({client_contact.bill_to_contact})) Then 

強制數字,然後布爾轉換。一路上,Crystal Reports不認爲它是一個布爾值或數字。

+0

它拋出一個錯誤,說需要一個數字或貨幣。如果我嘗試將其轉換爲雙精度值,則表示存在非數字值。 – MISMajorDeveloperAnyways

+0

@MISMajorDeveloperAnyways - 更新了我的答案;如果這仍然不起作用,那麼你已經有了一個值不能轉換爲數字的值。 – LittleBobbyTables

+0

我一直在尋找在數據庫中,有的只是明確真假選項...我完全在這一個難住了。即使是使用布爾型記錄選擇函數的舊版報表也不適用於我的Crystal Reports版本。 – MISMajorDeveloperAnyways