For loop crystal报表中公式内的For循环

For loop crystal报表中公式内的For循环,for-loop,crystal-reports,For Loop,Crystal Reports,假设我想在列表中找到十件最常见的事情。Crystal reports允许您使用Nthmostfrequent函数逐个轻松地执行此操作。我很好奇,如果我们能更有效地做到这一点,比如说使用for循环 我试过了 local numbervar i; local stringvar result; local stringvar result = nthmostfrequent(i,{ticket.diagnosis}); for i :=1 to 10 do ( nthmostfrequent

假设我想在列表中找到十件最常见的事情。Crystal reports允许您使用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是一个数字,那是行不通的

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

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

  • 在第3行,您试图在初始化前使用
    i
  • 调用
    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()
    将不接受变量作为其第一个参数值;必须向其传递一个显式整数。此方法无效。

    谢谢您的回复!我仍然得到同样的错误,说“这里需要一个数字”,然后光标转到第n个最频繁的I。我使用的是过时的crystal reports版本,所以也许这就是问题所在?@BrinnRiordan Nope,你说得对。Crystal也不允许我使用变量作为第一个参数。帮助文件明确地说是“整数”,我认为他们在数字类型之间画了一个区别。对不起,我认为这终究行不通。该死的这种僵化!再次感谢你的帮助!