Parameters crystal reports详细显示顺序与用户输入参数的顺序相同

Parameters crystal reports详细显示顺序与用户输入参数的顺序相同,parameters,crystal-reports,Parameters,Crystal Reports,水晶报告问题。我有一个用户在参数中输入发票编号列表。她希望按照在参数中输入发票号列表的顺序显示发票号和其他信息。这在Crystal Reports中是否可能。我在SQL中看到了许多实现这一点的方法,但在Crystal Reports中没有 下面是Crystal Reports中用作命令的当前SQL查询的简化版本。paramater{?InvoiceNumber}是一个CR数组参数 SELECT CUS.ACCOUNT, CUS.ADDRESS, CUS.COMPAN

水晶报告问题。我有一个用户在参数中输入发票编号列表。她希望按照在参数中输入发票号列表的顺序显示发票号和其他信息。这在Crystal Reports中是否可能。我在SQL中看到了许多实现这一点的方法,但在Crystal Reports中没有

下面是Crystal Reports中用作命令的当前SQL查询的简化版本。paramater{?InvoiceNumber}是一个CR数组参数

SELECT
     CUS.ACCOUNT,
     CUS.ADDRESS,
     CUS.COMPANY,
     INV.INVOICE_ID
FROM
     INV
INNER JOIN
     CUS
     ON INV.ACCOUNT = CUS.ACCOUNT
WHERE
     INV.INVOICE_ID IN {?InvoiceNumber}
试试这个:

  • 在Crystal Reports中创建一个公式,以在参数数组中查找发票索引。我们把它命名为IndexOf,代码可以是:

    numbervar size:=ubound({?AccountNumber});
    numbervar position:=0;
    Local NumberVar i;
    For i := 1 To size Do
    (
        if {?AccountNumber}[i] = {INV.INVOICE_ID} 
        then position:=i;
    );
    position; //return
    
  • 通过IndexOf创建一个组


  • 到目前为止,您做了什么?我试图找出输入的信息是如何存储在参数中的,但我只能说这是随机的。我想知道这是否是一种在输入发票号时“标记”发票号的方法,如a-1987665、B-1876543等。您是否尝试使用参数进行分组?@Siva我认为分组不起作用,因为所需的标准是用户输入数据的顺序。他说Crystal不遵守这个顺序。@SMcHugh用户是如何输入参数值的?他是使用Crystal Report提示符还是有一个输入表单?我也这样做了,但我最终使用了
    {?AccountNumber}[I]
    {INV.INVOICE\u ID}
    而不是
    position
    。。。好主意+1@heringer非常感谢你。成功了。在参数中输入发票号时,即使刷新报告,发票号也会保留在数组中的位置。在我的学习中,您能解释一下为什么在代码末尾使用//return吗?这只是一个注释,说明最后一行定义了函数返回的内容(“position”)。您可以安全地删除注释“//return”