【问题标题】:For loop inside a formula in crystal reports水晶报表中公式内的for循环
【发布时间】:2022-05-10 05:04:40
【问题描述】:

假设我想在一个列表中找到十个最常见的东西。 Crystal 报表允许您使用第 Nthmostfrequent 函数一一轻松完成此操作。我很好奇我们是否可以使用 for 循环更有效地做到这一点..

我试过了

local numbervar i;
local stringvar result;
local stringvar result = nthmostfrequent(i,{ticket.diagnosis});
for i :=1 to 10 do
(
    nthmostfrequent(i,{ticket.diagnosis});
    i := i+1;
);
result;

但在公式中的 i 处预期数字是行不通的。

编辑:认为我还需要初始化一个数组来存放结果? 非常感谢任何帮助!

【问题讨论】:

    标签: for-loop crystal-reports


    【解决方案1】:

    您的公式存在一些问题。最值得注意的是:

    1. 在第 3 行,您尝试在初始化之前使用 i
    2. NthMostFrequent() 的调用没有将其结果保存在任何地方。没错,您需要使用数组来保存您的值。

    试试这个

    local numbervar i;
    local stringvar array result;
    redim result [10];
    
    for i :=1 to 10 do
        (
          result[i]:=nthmostfrequent(i,{ticket.diagnosis})
        );
    
    //A formula cannot evaluate to an array. This collapses the array into a string
    join(result, ', ')
    

    编辑:NthMostFrequent() 似乎不会接受变量作为其第一个参数值;它必须传递一个明确的整数。这个方法不行。

    【讨论】:

    • 感谢您的回复!我仍然收到同样的错误,说“这里需要一个数字”,然后光标转到第 nthmostfrequent 的 i。我使用的是过时版本的水晶报告,所以这可能是问题所在?
    • @BrinnRiordan 不,你是对的。 Crystal 也不会让我使用变量作为第一个参数。帮助文件明确表示“整数”,我认为他们正在区分数字类型。抱歉,我认为这毕竟行不通。
    • 该死的不灵活!再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多