如何根据参数选择多个值?

时间:2011-08-11 09:31:42

标签: vb.net crystal-reports

我有一点挑战。我有一个报告,我声明了一个名为 Department 的参数,其默认值如下:

所有部门,项目,现场服务,车间,保修,海事,合同,制造。

每个部门都有数据库条目,我将其分组到部门,例如 现场服务有[“JOB - EXT”,“JOB-AFMEXP”,“JOB-LUB / S”,“JOB-NBCMTU”,“JOB-ABB-AS”]

我还启用了“允许多个值”复选框。

在我的选择专家中,我有:

{command.Job Posting Group} in 
switch(
   {?Department} = "All Departments",["","JOB - EXT", "JOB-AFMEXP", "JOB-LUB/S", "JOB-   NBCMTU","JOB-ABB-AS","JOB-CANPJB",
                 "JOB-INSTAL","JOB-CUMNS", "JOB-W/SHOP", "JOB-WS/GEN","JOB-WTY","JOB-MAR","JOB-S/AGR", "RENTAL"],
{?Department} = "Project",["JOB-INSTAL"],
{?Department} = "Field Service",  ["JOB - EXT", "JOB-AFMEXP", "JOB-LUB/S", "JOB-NBCMTU","JOB-ABB-AS"],
{?Department} = "Workshop",  ["JOB-CUMNS", "JOB-W/SHOP", "JOB-WS/GEN"],
{?Department} = "Warranty",["JOB-WTY"],
{?Department} = "Marine",["JOB-MAR"],
{?Department} = "Contract",["JOB-S/AGR"],
{?Department} = "Manufacturing",["JOB-CANPJB"]
)

问题在于,当我测试它(使用CR10或在网络上),并且我选择多个值时,事物不会显示多个值的值。它仅在我选择一个部门时才有效。 我该怎么办?

2 个答案:

答案 0 :(得分:1)

如果{?Department}是一个多值参数,它的值本身就是一个数组。使用多个值,您不能再像{?Department} =“Project”那样进行检查,因为{?Department}在这种情况下是一个非脚本数组。相反,尝试使用类似"Project" in {?Department}等的开关布尔表达式。

编辑:实际上,还有另一个问题:无论如何,开关都不能用于你想要做的事情,因为它会在第一个真实表达式停止。您需要做的是首先构建一个包含所有可能的部门描述符的数组,然后执行{command.Job Posting Group} in YOUR_DEPARTMENT_ARRAY

答案 1 :(得分:0)

我辛苦劳作了一段时间b4我提出了这个解决方案(感谢一些朋友和Ryan让我记住开关无法正常工作。):

我首先创建了一个名为{?Department}的参数字段,然后编写了一个名为{@Dept}的函数,如下所示:

if {command.Job Posting Group} = "JOB-WTY" then
   "Warranty"
else
if {command.Job Posting Group} = "JOB-MAR" then
    "Marine"
else
if {command.Job Posting Group} in ["JOB-CUMNS", "JOB-W/SHOP", "JOB-WS/GEN"] then
   "Workshop"
else//etc.

我没有在公式中添加“All Dept”选项。因为我会在这样的选择专家中以编程方式执行此操作:

(
   (
      {?Department} <> "All Departments" and {@Dept} = {?Department}
   ) or
      {?Department} = "All Departments"
)