标题可能有点长/混乱,可能会产生误导,所以让我设置方案。
Columns - {Table.FruitDesc} {Table.FruitColor} {Table.FruitQty}
GH1a | Basket 1 |
GH1b | Fruit | Color | Qty |
GH1c |------------|--------|-----|
Details | Strawberry | Red | 3 |
... | Apple | Green | 1 |
... | Banana | Yellow | 9 |
<new set>
GH1a | Basket 2 |
GH1b | Fruit | Color | Qty |
GH1c |------------|--------|-----|
Details | Kiwi | Green | 1 |
... | Grape | Purple | 7 |
... | Plum | Red | 2 |
<new set>
GH1a | Basket 3 |
GH1b | Fruit | Color | Qty |
GH1c |------------|--------|-----|
Details | Apple | Green | 8 |
... | Kiwi | Green | 5 |
现在让我说我有一个参数{?Fruit}
,我用它来显示所有可能的水果列表。
我想将该参数传递给报告,并让它返回包含指定水果的篮子中的所有水果。
类似于:{?Fruit} IN {Table.FruitDesc}
- 这不起作用。
如果我选择Apple
{?Fruit}
我希望它返回Basket 1
和Basket 3
的所有结果,而不仅仅是Basket 1
和{{} 1}}在细节中只显示Basket 3
行,因为这会甩掉篮子大小的总计。
换句话说 - 我正在寻找包含Apple
的所有篮子以及他们的ACTUAL大小及相关内容。
答案 0 :(得分:0)
您的要求是simple
,但实施是单调乏味的任务
我的方法是:
请勿在记录排序专家中使用{?Fruit} IN {Table.FruitDesc}
,因为这会根据您的要求产生错误的结果......
根据您的要求,您需要将Fruit
的所有值存储在数组中,如下所示。 Creata公式@Add
Shared StringVar Array x;
x:=x+Fruit;
1
将上面的公式放在详细信息部分的最右边...并压制它。
现在转到GH1a
,GH1b
,GH1c
和Details
的专家部分并编写一个简写公式,以便在{?Fruit}
时在数组中然后是dont supress
,如果不存在supress
。
EvaluateAfter{@Add};
Local NumberVar i;
Local BooleanVar a;
Shared StringVar Array x;
for i:=0 to count(x) do
(
if x[i]={?Fruit}
then
a:=true
else
a:=false
);
if (a=true)
then false //if true then don't supress.. here true means value in array
else true //if true then supress.. here false means value is not in array
如果{?Fruit}
未在列表中退出,上面的公式将会显示
答案 1 :(得分:0)
您可以通过创建公式(常规公式而非记录选择公式)来执行此操作,如:
// {@MatchFruit} formula
if {?Fruit} in {Table.FruitDesc} then 1 else 0
如果此公式的总和等于0,那么您需要做的就是压制您的组。换句话说,如果篮子中没有水果与参数匹配,则取消组:
// Suppression formula for your Basket group
if sum({@MatchFruit},{Table.BasketID})=0