使用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的eqv功能。
答案 0 :(得分:2)
尝试将第二个功能更改为:
if CBool(CDbl({client_contact.bill_to_contact})) Then
强制数字,然后布尔转换。在某个地方,Crystal Reports并不认为它是布尔值或数字。
答案 1 :(得分:1)
事实证明,这是我用于数据库的ODBC驱动程序的问题。 它开启了“Booleans as Chars”的设置。 修正了它,就像一个魅力。
非常感谢类型转换技巧!我相信它们会在路上发挥作用。