Crystal 报告 2016 交叉表根据有条件可用的指定列的值抑制行
Crystal Reports 2016 crosstab supress rows based on value of specified columns that are conditionally available
我有一个这样的交叉表
Col1 Col2 Col3
Row1 1 0 1
Row2 0 1 1
Row3 1 0 0
Row4 0 0 1
这是为了在仓库和奥特莱斯之间移动库存。因此,如果 Col1 显示仓库的库存,而 Col2 和 Col3 是出口,则 Row2 和 Row4 的产品不可用,不应显示行。
但是,如果 Col1 和 Col2 是仓库,而 Col3 是出口,则只有 Row4 不可用,因此应该被抑制。
仓库的 ID 小于 X,出口的 ID 大于 X。我发现了这个 solution 并尝试使用代码应用它:
If {Stock}=0 and {VENUE_ID} < X Then
{%DB_NULL}
Else
{Stock}
但该代码仅适用于 VENUE_ID 小于 X 的 Stock。因此,只有当所有 Stock 值都等于 0 时,才会抑制行。
如果有办法让一行中的所有单元格都显示 0 值,那么它们就会被抑制。
这是正确的方法,我应该继续这条路并尝试修改代码,使一行中的其他单元格依赖于指定的单元格,还是我应该看看其他地方?
对于我想要实现的目标,是否有更好的解决方案?
我已经通过修改 SQL 服务器端的视图解决了我的问题。如果有人遇到同样的问题,请执行以下步骤:
向我从 CR 调用的 SQL 视图添加另一列。该列存储仓库库存的值。之前,仓库和商店的所有库存值都存储在一列中。
使用如下代码创建一个字段{@Warehouse_Stock}
:
If {Warehouse_Stock}=0 Then
{%DB_NULL}
Else
{Stock}
将 {@Warehouse_Stock}
字段添加到交叉表的行组。
创建另一个字段{@Shop_stock}
并添加代码:
If {Stock}=0 Then
{%DB_NULL}
ELSE IF {@Warehouse_stock} = 0 THEN
{%DB_NULL}
Else
{Stock}
添加 {@Shop_stock}
作为汇总字段到交叉表。
在交叉表专家中转到自定义样式选项卡,select @Warehouse_stoc
行并选中“隐藏空行”复选框。
这对我有用。希望这个解决方案也能帮助其他人。
我有一个这样的交叉表
Col1 Col2 Col3
Row1 1 0 1
Row2 0 1 1
Row3 1 0 0
Row4 0 0 1
这是为了在仓库和奥特莱斯之间移动库存。因此,如果 Col1 显示仓库的库存,而 Col2 和 Col3 是出口,则 Row2 和 Row4 的产品不可用,不应显示行。
但是,如果 Col1 和 Col2 是仓库,而 Col3 是出口,则只有 Row4 不可用,因此应该被抑制。
仓库的 ID 小于 X,出口的 ID 大于 X。我发现了这个 solution 并尝试使用代码应用它:
If {Stock}=0 and {VENUE_ID} < X Then
{%DB_NULL}
Else
{Stock}
但该代码仅适用于 VENUE_ID 小于 X 的 Stock。因此,只有当所有 Stock 值都等于 0 时,才会抑制行。 如果有办法让一行中的所有单元格都显示 0 值,那么它们就会被抑制。 这是正确的方法,我应该继续这条路并尝试修改代码,使一行中的其他单元格依赖于指定的单元格,还是我应该看看其他地方?
对于我想要实现的目标,是否有更好的解决方案?
我已经通过修改 SQL 服务器端的视图解决了我的问题。如果有人遇到同样的问题,请执行以下步骤:
向我从 CR 调用的 SQL 视图添加另一列。该列存储仓库库存的值。之前,仓库和商店的所有库存值都存储在一列中。
使用如下代码创建一个字段
{@Warehouse_Stock}
:If {Warehouse_Stock}=0 Then {%DB_NULL} Else {Stock}
将
{@Warehouse_Stock}
字段添加到交叉表的行组。创建另一个字段
{@Shop_stock}
并添加代码:If {Stock}=0 Then {%DB_NULL} ELSE IF {@Warehouse_stock} = 0 THEN {%DB_NULL} Else {Stock}
添加
{@Shop_stock}
作为汇总字段到交叉表。在交叉表专家中转到自定义样式选项卡,select
@Warehouse_stoc
行并选中“隐藏空行”复选框。
这对我有用。希望这个解决方案也能帮助其他人。