2

在 Crystal Reports 11 中,我需要创建一个报表,该报表返回一个表中的所有产品,这些产品具有一组共同的用户参数中列出的成分。此外,用户需要能够从一个请求到下一个请求输入不同数量的成分。例如:

我们有 Product_1,它由成分_1、成分_2 和成分_3 组成。
我们有 Product_2,它由成分_1、成分_5、成分_6 组成。我们有 Product_3,它由成分_1、成分_2 和成分_7 组成。

最终用户需要能够放入多达 3 种成分,并查看共享这些成分的所有配方。

在查询 1 中,他将输入成分_1,所有三种产品都应返回完整的成分列表,而不仅仅是成分_1。

在查询 2 中,他将输入应返回产品 1 和 2 的成分 1 和成分 2,再次带有完整的成分列表。

如果产品使用了用户输入的所有成分,我需要知道如何返回产品中的所有成分,而不排除该产品中的其他成分。我还需要确保返回数据库中使用这些特定成分的每个产品。

4

1 回答 1

0

这听起来更像是一个查询/存储过程问题,而不是 Crystal Reports 中的问题。

您的选择语句可以是这样的:

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)
                        )

这将选择具有其中一种成分的所有配方 ID。然后它将获取具有这些公式ID 之一的所有产品的列表,最后它将选择所有产品。这样,如果同一产品有多个 formulaID,它将全部选中。

希望这可以帮助。

于 2012-12-12T19:51:44.280 回答