我有一份水晶xi报告,主要报告和许多子报告。
我已将所有子报告链接到2个参数,这些参数非常适合各个标准匹配,但是我现在需要能够为我可以设置的参数之一选择多个条件,但它不是将详细信息传递给子报告。
这是我目前在主要报告记录选择中的内容
{Communication.Comm_Status} = "Complete" and
isnull ({Communication.Comm_Deleted}) and
{Communication.Comm_Action} = "PhoneOut" and
{Communication.comm_Result} in ["0", "1", "2"] and
not ({Communication.Comm_UpdatedBy} in [30, 33, 59]) and
{Communication.Comm_DateTime} in LastFullWeek and
{Territories.Terr_Caption} = {?Client} and
{Company.comp_campaign} = {?Campaign}
这就是我在子报告记录选择中的含义
isnull ({Communication.Comm_Deleted}) and
{Communication.Comm_Status} = "Complete" and
{Territories.Terr_Caption} = {?Pm-Territories.Terr_Caption} and
{Territories.Terr_Caption} = {?Pm-Territories.Terr_Caption} and
{Communication.comm_Result} in ["0", "1", "2", "3", "4"] and
not ({Communication.Comm_UpdatedBy} in [30, 33, 59]) and
{Communication.Comm_DateTime} in LastFullWeek and
{Company.comp_campaign} = {?Pm-Company.comp_campaign}
我想我最理想的是参数2中的'='parameter1和'contains'
我试图搜索决议,但我不知道我应该寻找加入的条款;多值参数或其他什么?
提前感谢任何指导。
答案 0 :(得分:0)
我在你的例子中不太确定哪个参数是哪个,但你可以这样做:
({tableName.tableField} = {?parameter1} AND
InStr({tableName.tableField}, {?parameter2}) > 0)
这将确保您的字段等于参数1并且该字段中包含参数2。如果字段是不同的数据类型,则可能需要将字段转换为字符串。
编辑:
对不起,我想我没有100%关注这个问题。如果你有一个多值参数,那么你必须把它当成一个数组(这就是你原始公式出错的原因)。为了循环遍历数组,您需要创建一个如下公式:
WhilePrintingRecords;
numbervar x := 1;
numbervar y := 0;
while x <= ubound({?Campaign})
do
(if instr({Company.comp_campaign},{?Campaign}[x],1) > 0
then y := y + 1;
x := x + 1);
y
编辑:
WhilePrintingRecords;
stringvar array campaign := {?Campaign};
numbervar x := 1;
numbervar y := 0;
for x := 1 to ubound(campaign)
do
(if instr({Company.comp_campaign},{?Campaign}[x],1) > 0
then y := y + 1;
x := x + 1);
y
然后在您的记录中选择您需要检查公式&gt; 0