【问题标题】:crystal reports detail display order in same order as user entered parameters水晶报告详细显示顺序与用户输入参数的顺序相同
【发布时间】:2017-11-06 04:10:26
【问题描述】:

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

以下是在 Crystal Reports 中用作命令的当前 SQL 查询的简化版本。参数 {?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}

【问题讨论】:

  • 到目前为止你做了什么?
  • 我试图找出输入的信息是如何存储在参数中的,但我可以说这是随机的。我想知道这是否是一种在输入发票编号时“标记”它们的方法,例如 A-1987665、B-1876543 等。
  • 你试过用参数分组吗?
  • @Siva 我认为 group 不起作用,因为所需的标准是用户输入数据的顺序。他说水晶不遵守这个命令。
  • @SMcHugh 用户如何输入参数值?他是使用水晶报表提示还是有输入表单?

标签: parameters crystal-reports


【解决方案1】:

试试这个:

  1. 在 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
    
  2. 按 IndexOf 创建一个组。

Here is a shared RPT file working with this.

【讨论】:

  • 我也做了同样的事情,但我最终使用了{?AccountNumber}[i]{INV.INVOICE_ID},但没有使用position...好主意。 +1
  • @heringer 非常感谢。那行得通。看来,当您在参数中输入发票编号时,即使刷新报告,它们也会保持其在数组中的位置。为了我的学习,您能解释一下为什么代码末尾的 //return 吗?
  • 这只是一个注释,以明确最后一行定义了函数返回的内容(“位置”)。您可以安全地删除评论“//return”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多