0

Crystal Reports 2011 を使用して、Pervasive v2011 データ エンジンでビューをクエリしています。Pervasive データベースの Crystal Reports でかなり長い選択を実行しようとしています。

SELECT の最後の WHERE まで、すべて正常に動作します。パラメータがあり、説明フィールドのパラメータにあるスニペットを見つけようとしています。Select Expert の公式を修正して、Description フィールドの LIKE ステートメントにワイルド カードを追加しようとしました。

そこから、Crystal が物事を大きく台無しにしているように見えます。SQL クエリを表示したときの長いクエリでは、正しくコーディングされていないように見えます ([データベース] > [SQL クエリを表示])。クエリをできる限り基本的に削除すると、同様に正しくコーディングされますが、何も返されません。Show SQL Query から大きなクエリのコードをコピーし、like ステートメントを修正して貼り付けて PCC に実行すると、期待どおりの結果が返されます。

Pervasive によって生成された SQL からのクエリ部分 ("V_PO_LINES"."DESCRIPTION" LIKE '%' OR "V_PO_LINES"."DESCRIPTION" LIKE '%' OR "V_PO_LINES"."DESCRIPTION" LIKE '{?LikeText}')

Crystal によって作成されたクエリは、簡素化され簡略化されたクエリです。 SELECT "PO_LINES"."DESCRIPTION" WHERE "PO_LINES"."DESCRIPTION" LIKE '%{?LikeText}%'

PCC で機能する長いクエリからの SQL スニップ。 ("V_PO_LINES"."DESCRIPTION" LIKE '%{?LikeText}%')

ステートメント クリスタル セレクト エキスパートを選択します。 {V_PO_LINES.DATE_LAST_RECEIVED} <> 日付 (非クローズ) および {V_PO_LINES.DATE_DUE_LINE} = {?日付範囲} および {V_PO_LINES.VENDOR} = {?ベンダー} および {V_PO_LINES.DESCRIPTION} like '%' + {?LikeText} + '%'

私は 2011 バージョン 14.04.738 RTM を使用しています

他の誰かがこれに遭遇していますか?修正または回避策はありますか?

4

1 に答える 1

1

{?LikeText} パラメータが複数の値を受け入れる場合、Crystal は「+」記号を要素を配列に追加する演算子として扱います。そうすること'%' + {?LikeText} + '%'は、実際には文字列の配列を作成することであり、単一の連結文字列ではありません。

[ '%', 'WhatYouEnteredInTheParameter', '%' ]

その結果、Crystal はこれを SQL の論理 OR に解析します。これを修正するには、パラメータに移動して「複数の値を許可しますか?」を設定します。「いいえ」に。

また、Crystal のワイルドカードである「%」の代わりに「*」を使用することをお勧めします。

于 2014-01-20T18:09:43.637 に答える