0

データベーステーブルを使用してユーザーが作成した(アプリ内で)フィールドを画面に表示するサードパーティプログラムがあるため、次のようなUser_Created_Fieldsという名前のテーブルがあります

TABLE         FIELD_NAME          GROUP     LABEL
products      charge1             1         First Charge
products      begin_date1         1         Begin Date
products      end_date1           1         End Date 
products      charge2             2         First Charge
products      begin_date2         2         Begin Date
products      end_date2           2         End Date 

アプリがテーブルでこれを確認すると、アプリに次のように表示されます

Group 1
First Charge   *text area for input*
Begin Date     *text area for input*
End Date       *text area for input*

----------

Group 2
First Charge  *text area for input* 
Begin Date     *text area for input*
End Date       *text area for input*

アプリは、これらのフィールドのデータを User_Created_Fields テーブルで指定されたテーブルとフィールド名に保存するため、PRODUCTS.charge1 フィールドと PRODUCTS.charge2 フィールド (対応する日付フィールドも同様) になります。

Products テーブルに格納されている値を選択するレポートを作成する必要がありますが、フィールドはユーザーによって追加されるため、User_Created_Fields テーブルの Table および field_name 列から選択された列が必要です。

出力は次のようになります

PRODUCTS.Begin_date, PRODUCTS.End_date, PRODUCTS.Charge1, User_Created_Fields.Group

クエリは(非常に大まかに)次のようになります

select  (select Table ||'.'||field_name  from User_Created_Fields where Label='First Charge' and Group= (select Group from User_created_fields where label ='First Charge') ) from Products

これは Crystal Report に入るので、通常のように SQL を使用して SQL を生成することはできません。これを行うためのよりクリスタルな方法もあるかもしれませんが、それが何であるかはわかりません。この情報は明らかに販売の詳細と組み合わされますが、この部分は信じられないほど複雑であるため、単純にするためにその部分を省略しました. 私はクリスタル11とオラクル10を使用しています

このすべてを読んだ場合は、報酬に値する.... ありがとう。

4

1 に答える 1

0

私の知る限り、Crystal Reports は SQL ステートメントの代わりにストアド プロシージャにアクセスできます。そのため、SQL ステートメントを作成するためのコードをストアド プロシージャに配置し、それをレポートのデータ ソースとして使用します。

Crystal を満足させるには、サポートする列の最大数を決定し、常にその数の列を返す必要がある場合があります。

于 2012-05-15T18:50:22.860 に答える