Crystal Reports - 将报表数据用作Sql命令参数

时间:2015-10-02 03:46:32

标签: crystal-reports

我希望这里的某个人能够帮我解决Crystal Reports问题,这个问题一直困扰着我好几天。

我有一份报告,用作我们仓库员工的拣货单,告诉他们通过我们的销售系统为每个订单包装哪些产品。

该报告包含订单的所有产品以及需要在报告的详细信息部分中打包的数量,这些产品来自多个连接表。

我的问题是我必须再次查询数据库,以便获得订单中每个产品的总项目数量,这些项目已包装在整个仓库的所有订单中。 报告数据源仅返回与拣配单上的订单相关的记录,因此我需要一个子查询。

我尝试使用带有以下查询的SQL命令:

SELECT ISNULL(SUM(QtyPacked), 0)
  FROM tblPackingSlipLines
  WHERE Status = 'Packed'
    AND ProductId = '[ProductId]'

我坚持将product id传递给命令,因为它保存在报告本身的文本字段中,该文本字段填充自tblProducts.ProductId(其中一个连接的表)。

是否可以从命令中访问此值?

我尝试了ProductId = '{tblProducts.ProductId}', @ProductId, ?ProductId之类的内容以及其他许多奇怪而精彩的排列。

我不能使用参数,因为这需要用户交互;因为报告是由Windows服务自动生成或从服务传递静态值而无法实现。

我也尝试过使用公式,但这只会为该不同的订单行提取QtyPacked的总和,而不是数据库中的所有打包订单:

SUM('{tblPickingSlipLines.QtyPacked}', '{tblProducts.ProductId}')

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

为此目的尝试使用子报告。

在子报告中写下您的第二个查询,并通过子报告链接将tblProducts.ProductId传递到子报告的记录选择参数,现在您的查询在子报告中显示为:

SELECT ISNULL(SUM(QtyPacked), 0)
  FROM tblPackingSlipLines
  WHERE Status = 'Packed'
    AND ProductId = {pm-product ID}