我有一个水晶报告,当我在其中一个表格中的字符串上过滤它时,它会丢弃该组中的一个项目。主表为V_PDAYPROD_CRW1
,我过滤的列名为MFGNO
。如果我跑
select mfgno
from v_pdayprod_crw1
where mfgno like 'SCA59-W%'
group by mfgno
order by mfgno
我得到了
SCA59-W
SCA59-W-SUB
SCA59-W/EU-SUB
SCA59-W/UF
SCA59-W/UF-SUB
所以在记录选择公式中我添加了
{V_PDAYPROD_CRW1.MFGNO} in "SCA59-W" to "SCA59-W/UF-SUB"
期望获得以上所有记录。但是,当我这样做时,报告中缺少SCA59-W-SUB
。我得到的结果是
SCA59-W
SCA59-W/EU-SUB
SCA59-W/UF
SCA59-W/UF-SUB
我必须将选择公式更改为
{V_PDAYPROD_CRW1.MFGNO} like "SCA59-W*"
为了让SCA59-W-SUB
显示出来,但是当我这样做时,
SCA59-W
SCA59-W-SUB
SCA59-W/EU-SUB
SCA59-W/UF
SCA59-W/UF-SUB
不幸的是我不能使用{V_PDAYPROD_CRW1.MFGNO} like "SCA59-W*"
,因为报告需要有一个范围,而且我的用户会放入该范围。我可以输入一个有效的范围来获取我从手动查询中得到的整个集合吗?
答案 0 :(得分:1)
我发现你使报告和公式变得复杂。
虽然用户将范围作为输入,但您不需要在报告中使用它,操作就在您手中,您可以按照它的工作方式进行操作。
我得到了一个小小的建议,希望它有所帮助。
从两个参数中获取输入,并假设参数1始终具有范围的开始,参数2具有范围的结束。
所以你的公式是:
{V_PDAYPROD_CRW1.MFGNO} like {Parameter1}&"*"
以上选择将为所有记录提供范围的开始和结束,并且它包括参数2以及
修改------------------------------------------- --------------- 强>
好的我已经尝试了一下,您可以使用数组和子报告来实现这一点。
{V_PDAYPROD_CRW1.MFGNO} like {Parameter1}&"*"
中使用此公式,该公式将检索所有不需要的值。现在将字段{V_PDAYPROD_CRW1.MFGNO}
放在详细信息部分,对其进行排序,以便我们可以逐个进行存储数据并丢弃休息和抑制详细信息。
创建一个公式Required data
并在下面写下代码,并将其作为最后一个详细信息。写下面的代码:
Shared Stringvar array storerequiredvalues;
storerequiredvalues:=storerequiredvalues+{V_PDAYPROD_CRW1.MFGNO};
1
现在再创建一个公式Extract Data
来提取所需的数据。将公式放在公式Required data
Shared Stringvar array storerequiredvalues;
Local Numbervar i;
Shared StringVar display;
For i:=1 to UBound(storerequiredvalues) Do
(
display:=display+storerequiredvalues[i]+chrw(13);
if storerequiredvalues[i]={Parameter2}//Last value in range provided by user
then
exit for;
);
display
现在创建一个子报告并将其放在详细信息部分之后,并使用子报告链接链接创建的公式
在子报告中创建公式Display data
并写下以下代码:
Shared Stringvar display;
display
将公式置于显示位置并预览报告。
只有使用此方法的约束才能在主报表中检索不需要的数据。
让我知道任何问题