0

我有一份水晶 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}

我想我最理想的是'=' parameter1 和'contains' in parameter2

我试图搜索解决方案,但我不知道我应该寻找什么条件加入;多值参数还是其他?

提前感谢您的任何指导。

4

1 回答 1

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

然后在您的记录中选择您需要检查公式 > 0。

于 2013-11-22T15:09:33.227 回答