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})

我尝试了 eqv 函数,我的 CR 版本为 12.0.0.683。

4

2 回答 2

2

尝试将第二个函数更改为:

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

强制进行数字转换,然后进行布尔转换。在此过程中,Crystal Reports 并不认为它是布尔值或数字。

于 2012-10-02T17:04:12.983 回答
1

事实证明这是我用于数据库的 ODBC 驱动程序的问题。它有一个“Booleans as Chars”设置已打开。修复它,就像一个魅力。

无论如何,非常感谢类型转换提示!我敢肯定,它们将来会很有用。

于 2012-10-04T21:31:20.883 回答