4

サブレポートを追加して、メイン レポートからサブレポートにパラメータを渡そうとしています。すべてをリンクすると、サブレポートは何千ものレコードを調べて、被験者に関する保険情報を探しますが、レコードはありません。

クエリ ツールに移動し、Crystal レポート クエリに追加されると予想される WHERE 句を使用してクエリを実行すると、行が返されないのに数ミリ秒かかります。

Crystal レポートでプレビューを実行すると、すべてのレコードを実行するのに数分かかります。クエリが本来のようにレコードを返さないのはなぜですか? または、レコードがある場合に探している特定のものだけですか? 10,000 件以上のすべてのレコードが Crystal に返されるのではなく、メイン レポートから渡されるパラメータに基づいて取得する必要がある 1 つまたは 0 つだけです!!

ガイダンスをありがとう、レスリー

編集: PatID と Episode_Number を必要とするメイン レポートに関するクエリがあります。同じ PatID と Episode_Number でフィルター処理したいサブレポートのクエリがあります。サブレポート クエリは次のとおりです。

select b.patid, b.episode_number, b.guarantor_name, Trim(b.guar_address_line1|| ' ' || ifNull(b.guar_address_line2, '')) address, b.guar_address_city || ', ' || b.guar_address_state || ' ' || b.guar_address_zip location, b.guar_phone_number from billing_guar_data b

このコマンドに「余分な」パラメータを追加していません。このリンクによって追加されたこれらのパラメーターがあります。 Pm-Command.PATID and Pm-Command.Episode_Number

サブレポートを作成したときにリンクページから選択したもの

4

2 に答える 2

3

私は前にこれをやったことがあります。サブレポート内の SQL コマンドにパラメーターを取得する方法を理解するのにしばらく時間がかかりました。where句がないため、そこにあるSQLはすべてのレコードを取得します。パラメータを渡してSelect Expertで取得する場合は、10,000 件以上のレコードを取得した後にフィルタリングしています。サブレポートが特定のレコードを取得するには、メイン レポートからサブレポートの SQL コマンドにパラメーターを取得する必要があります。方法は次のとおりです。

元のパラメーターまたはフィールド (利用可能な場合) をメイン レポートから渡すことができます。「Pm-Command.PATID and Pm-Command.Episode_Number」と書いたので、フィールドを渡しています。まず、 SQL コマンドにwhere句を追加します。

select 
   b.patid, b.episode_number, b.guarantor_name, Trim(b.guar_address_line1|| ' ' || ifNull(b.guar_address_line2, '')) address, b.guar_address_city || ', ' || b.guar_address_state || ' ' || b.guar_address_zip location, b.guar_phone_number 
from
   billing_guar_data b
where
   b.patid = {?Pm-Command.PATID}
   and b.episode_number = {?Pm-Command.Episode_Number}

次に、サイドパラメータリストの同じウィンドウで、2 つのパラメータを作成します。

  • PM-Command.PATID
  • PM-Command.Episode_Number

次に、メイン レポートで [サブレポートの変更] リンクを表示します... 送信している 2 つのパラメーターはまだそこにあるはずです。両方のパラメーターで [フィールドに基づいてサブレポートのデータを選択] がオフになっていることを確認します。これをオンにすると、パラメータがSelect Expertに送信されます。これは SQL コマンドに含まれるため、チェックを外す必要があります。

于 2012-10-27T08:46:51.317 に答える
0

Crystal は、あなたが思っているサブレポートに WHERE 句を使用していない可能性があります。これは、SQL に変換できない Crystal 構文またはサブレポートのレコード選択式で Crystal 関数を使用していることが原因である可能性があります。これが発生すると、DB からすべてのレコードを取得し、レコードの選択をローカルで実行します。これは、あなたのケースで起こっているように聞こえます。

サブレポートのクエリを確認するには、まずレポート全体をプレビューしてから、Crystal の独自のタブでサブレポートを開き (Crystal の独自のレポートのように開きます)、[データベース] -> [SQL クエリの表示] に移動します。

選考基準も載せていただけると助かります。

于 2012-10-26T17:00:07.583 に答える