2015-10-02 59 views
0

我希望这里有人能够帮我解决一个Crystal Reports问题,这个问题一直在关闭和关闭好几天。Crystal Reports - 使用报表数据作为Sql命令参数

我有一份报告用作我们仓库员工的拣货单,告诉他们哪些产品需要打包,以便通过我们的销售系统进行每项订单。

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

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

我试图使用一个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总和为独特的命令行,而不是所有的包装订单的DB:

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

任何帮助将不胜感激。

+0

使用SQL相同的SQL查询表达式字段,不在SQL命令中。对于productid使用SQL字段名称('ProductId = tblProducts.ProductId') - 并将整个语句放入parens(...)'中。 – Arvo

回答

0

尝试使用子报告来达到此目的。

写子报告您的第二个查询并通过tblProducts.ProductId通过子报表链接子报表的记录选择参数现在查询进来分报告:

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