Crystal Reports  

レコード選択式のトラブルシューティング

作成した選択式で発生した問題を修正するには、まず、選択式の中で参照されているフィールドがすべてレポート内に配置されていることを確認します。次に選択式を削除し、式を再構築しながら順を追ってテストしていきます。

データを生成しない選択式の修正

レコード選択式を作成した場合、ヘッダーとフッターの情報はレポートに表示されているのに、詳細情報がまったく表示されない、という状況に直面することがあります。その原因は、選択式によってすべてのレコードが取り除かれていることにあります。通常、これは、作成した選択式にエラーがあることによって起こります。

選択式に起こる問題の原因として考えられるものには、次のようなものがあります。

大文字と小文字の不統一の修正

レコード選択式では、大文字と小文字が区別されます。つまり、"Bob" は "Bob" とだけ一致します。"bob"、"BOB"、"BoB"、"bOB"、"boB"、"BOb" とは一致しません。したがって、{customer.CONTACT FIRST NAME}フィールドの "BOB" というデータを持つレコードだけを入れるように選択式を設定しても、{customer.CONTACT FIRST NAME}フィールドのすべてのエントリで大文字と小文字が混在している("Bob" など)場合は、一致するデータが見つからないため、レポートの詳細は印刷されません。

この問題を解決するには、選択式の中で UpperCase (str) 関数または LowerCase (str) 関数を使用して、選択の前にフィールド データを大文字と小文字のどちらか一方に変換します。たとえば、次の式を使用するとします。

{customer.CONTACT FIRST NAME} = "BOB"

この式は次のように変更することができます。

UpperCase({customer.CONTACT FIRST NAME}) = "BOB"

この 2 番目の式では、{customer.CONTACT FIRST NAME} フィールドの値を大文字に変換してから、"BOB" と一致する文字列がフィールドにあるかどうかをチェックします。この式を使用すると、文字がすべて大文字に変換されるため、"b"、"o"、"b" の 3 文字のインスタンスが大文字小文字に関係なく一致します。

同じように LowerCase 関数を使用して "bob" と一致させることもできます。

作成した選択式をよくチェックし、選択しようとしているテキストが大文字か小文字かを確認してください。判断に迷う場合は、UpperCase または LowerCase 関数を使用し、大文字と小文字を統一して確実に選択できるようにしてください。

次の式も、同じような働きをします。

"BOB" in UpperCase({customer.CONTACT FIRST NAME})

選択式内の不要なスペース

スペースも文字です。レコード選択式の検索キーがスペースを含む場合は、スペースも含めてすべてが完全に一致するレコードが検索されます。例を挙げます。

"Mr . " in {customer.TITLE}

この式では、"Mr." という敬称と一致が起こりません。 検索キーの "r" とピリオドの間に余分なスペースがあるためです。同様に、"Ph. D" と "Ph.D" は一致しません。

作成した選択式をよくチェックして、選択式に含まれるスペースが、検索対象のフィールド内のスペースと一致していることを確認してください。

参照

レコードの選択 | データベース サーバーへのレコード選択のプッシュ ダウン