Crystal reports 多个表上的左外部联接使用selection expert-Crystal Reports隐藏数据
在一对多关系中,crystal reports在报告两个表时遇到问题Crystal reports 多个表上的左外部联接使用selection expert-Crystal Reports隐藏数据,crystal-reports,outer-join,multiple-tables,Crystal Reports,Outer Join,Multiple Tables,在一对多关系中,crystal reports在报告两个表时遇到问题 示例表: dbo.stock Barcode Qty 12345 3 11111 5 22222 6 dbo.销售 Barcode SalesDate QtySold<br/> 12345 1/1/2013 1 12345 1/1/2012 1 12345 1/1/201
示例表: dbo.stock
Barcode Qty
12345 3
11111 5
22222 6
dbo.销售
Barcode SalesDate QtySold<br/>
12345 1/1/2013 1
12345 1/1/2012 1
12345 1/1/2010 1
11111 1/1/2000 1
报告配置:
Group 1 Header |
Sales |Sales.barcode Sales.QtySold
Group 1 Footer |Group(Barcode) Sum(QtySold) Stock.Qty
问题是: 显示销售和库存(无销售日期限制) 但当选择数据范围时,输出将删除销售超出所选数据范围的有效产品。2012年1月1日-2013年1月1日
Barcode Sold OnHand
12345 2 3
22222 6
我有一个使用子报表的版本,但是由于子报表在每一行中运行,所以使用的开销非常大 你能想出一个解决办法吗?(不使用子报告) 谢谢你
系统说明:
水晶8.5
通过ODBC驱动程序访问Database.dbf文件那么您想要的是所有条形码信息,而不是日期范围内的销售额 详细地试试这个公式 如果{daterange}中的dbo.sales.SalesDate,那么{dbo.sales.QtySold}中的else为0 将摘要插入组页脚
注意:您可能需要在公式编辑器中切换到Null的默认值,或者在公式中考虑Null值。问题是,即使您正在进行左外部联接,您也在选择右侧表中的日期范围,这实际上使其成为内部联接。如果在记录选择公式中有类似于
{Sales.SalesDate}={?DateParameter}
的内容,请将其删除
相反,使用
isnull({Sales.SalesDate})或{Sales.SalesDate}{DateParameter}
禁止显示详细信息部分,以便仅在报表上显示所需日期的销售额。要处理组页脚中的“销售数量”,请执行以下操作:,仅对日期范围内的记录使用连续总计,而不是直接求和。如果您希望在crystal report中使用左外联接联接联接两个表,同时希望基于右表筛选报告,例如sales.SalesDate>='1-JAN-2014'联接将转换为equi联接
为了解决这个问题,有些人建议使用
(ISNULL(sales.SalesDate)或sales.SalesDate>='2014年1月1日')
上述解决方案仅在库存销售额为0且您仍希望显示这些库存时有效,但如果某些库存的销售额超过0且销售日期在“2013年12月31日”或之前,该怎么办。在这种情况下,ISNULL(sales.SalesDate)将不起作用。要解决此问题,您需要添加命令对象或创建sales表的视图,如下所示
我一直在寻找这个,因为我是一个水晶报告新手。非常感谢。
Barcode Sold OnHand
12345 3 3
11111 1 5
22222 6
Barcode Sold OnHand
12345 2 3
22222 6