2

Crystal Reports 11 では、ユーザー パラメータにリストされている成分のセットが共通しているテーブル内のすべての製品を返すレポートを作成する必要があります。さらに、ユーザーは要求ごとにさまざまな数の材料を入力できる必要があります。例えば:

成分 1、成分 2、成分 3 で構成される製品 1 があります。
成分 1、成分 5、成分 6 で構成される製品 2 があります。成分 1、成分 2、成分 7 で構成される製品 3 があります。

エンド ユーザーは、最大 3 つの成分を入力し、それらの成分を共有するすべての処方を確認できる必要があります。

クエリ 1 で Ingredient_1 を入力すると、3 つの製品すべてが、component_1 だけでなく、完全な成分リストとともに返されるはずです。

クエリ 2 では、成分 1 と成分 2 を入力します。これにより、製品 1 と 2 が返され、再び完全な成分リストが返されます。

その製品の他の成分を除外せずに、ユーザーが入力したすべての成分を使用する場合、製品のすべての成分を返す方法を知る必要があります。また、これらの特定の成分を使用するデータベース内のすべての製品が返されるようにする必要もあります。

4

1 に答える 1

0

これは、CrystalReportsの問題というよりもクエリ/ストアドプロシージャの問題のように聞こえます。

selectステートメントは次のようになります。

DECLARE @ingredient1 VARCHAR(50),
  @ingredient2 VARCHAR(50),
  @ingredient3 VARCHAR(50)


SELECT *
FROM products 
WHERE fld_ProductID IN (SELECT DISTINCT p.fld_ProductID
                        FROM products p
                        WHERE p.fld_formulaID IN (SELECT DISTINCT fld_formulaID 
                                                    FROM formulas 
                                                    WHERE fld_ingredient = @ingredient1
                                                        OR fld_ingredient = @ingredient2
                                                        OR fld_ingredient = @ingredient3)
                        )

これにより、これらの成分の1つを持つすべての数式IDが選択されます。次に、これらのformulaIDのいずれかを持つすべての製品のリストを取得し、最後にすべての製品を選択します。このように、同じ商品に複数のformulaIDがある場合、それらすべてが選択されます。

お役に立てれば。

于 2012-12-12T19:51:44.280 に答える