2

PostgreSQL ODBC ソースを介してデータを取得する Crystal Reports を利用する際に、かなり厄介な問題が発生しています。データベースエキスパートでブール値として表示され、Crystalレポートのほぼすべての場所に表示されるブール値フィールドがあるようです。使用しようとしている if ステートメントがありますが、これは機能しないか、使用時にエラーになります。データを参照すると、1 または 0 のいずれかで、長さが 5 の文字列です。これを修正しようとすると、控えめに言っても問題が発生します。

これは機能しません (常に client_contact ではなく client から名前を取得します)

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関数を試しました。

4

2 に答える 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 に答える