Coldfusion cfscript是否支持在具有group属性的查询上循环

Coldfusion cfscript是否支持在具有group属性的查询上循环,coldfusion,coldfusion-10,Coldfusion,Coldfusion 10,我在AdobeColdFusion 10中运行以下代码。我想删除所有标记并在脚本中执行此操作。真正的代码更复杂,这只是一个用于演示的shell 有cfscript对此的支持吗?您应该能够复制和粘贴此代码,就像我试图实现的示例一样 <h1>Task Migration</h1> <cfscript> id=0; commentid=0; qryTasks = queryNew("tasknumber,name,commentid,comm

我在AdobeColdFusion 10中运行以下代码。我想删除所有标记并在脚本中执行此操作。真正的代码更复杂,这只是一个用于演示的shell

有cfscript对此的支持吗?您应该能够复制和粘贴此代码,就像我试图实现的示例一样

<h1>Task Migration</h1>
<cfscript>
    id=0;
    commentid=0;
    qryTasks = queryNew("tasknumber,name,commentid,comment"
                        ,"integer,varChar,integer,varChar"
                        ,[ 
                            { 
                                tasknumber : ++id
                                ,name : "Task Name for #id#"
                                ,commentid: ++commentid
                                ,comment : "comment #commentid# on tasknumber #id#"
                            }
                            ,{ 
                                tasknumber : id
                                ,name : "Task Name for #id#"
                                ,commentid: ++commentid
                                ,comment : "comment #commentid# on tasknumber #id#"
                            }
                            ,{ 
                                tasknumber : ++id
                                ,name : "Task Name for #id#"
                            }
                            ,{ 
                                tasknumber : ++id
                                ,name : "Task Name for #id#"
                                ,commentid: ++commentid
                                ,comment : "comment #commentid# on tasknumber #id#"
                            }
                        ] 
                );  
    writedump(var:qryTasks, label:"starting query");
    traceLog=[];
</cfscript>

<cfloop query="qryTasks" group="tasknumber">
        <cfscript>
            arrayAppend(traceLog, "Make a ticket for #qryTasks.name#");
        </cfscript>
        <cfloop group="commentID">
            <cfscript>
                if (trim(qrytasks.comment) != ''){
                    arrayAppend(traceLog, "Add comment to #qryTasks.name#: #qrytasks.comment#");
                };
            </cfscript>
        </cfloop>
</cfloop>

<cfdump var="#tracelog#" label="Stuff that happened in the loop" />
有以下几点。如果您在查询中定义分组,那么它可能会提供您所需要的

for在查询的构造中

类似于在数组和结构上循环,使用for in-construct,您可以在CFScript中循环查询对象

范例

在本例中,查询结果集在变量arts中可用,for In循环用于在结果集上循环。for in构造中使用的变量行是包含查询列作为键的结构。可以使用arts.currentrow引用当前行

<cfquery name="arts" datasource="cfartgallery"> 
    select * from art 
</cfquery> 
<cfscript> 
    cols = listToArray(listsort(arts.columnlist, "textnocase")); 
    for(row in arts) 
    { 
        for(col in cols) 
            writeoutput(arts.currentrow & " ..." & col & ": " & row[col] & "<br>"); 
        writeoutput("<hr>"); 
    } 
</cfscript>
注意:如示例所示,必须以queryname为前缀才能访问查询结果变量,如recordcount或currentrow


回答“不可能”。有一些变通办法,但我对此不感兴趣。RAILO做到了,Adobe CF11做到了。但据我记忆所及,在ACF10中不可行,在cfscript中,group不是for循环的可用属性。如果您经常需要此功能,请创建一个模拟组行为的方法。Railo实际上支持带有group属性的cfscript中的循环命令,Adobe承诺使用CF9和CF10将所有功能从标记移植到脚本,但是Adobe。因此,如果当前的组值eq旧的组值继续,那就走老派的道路;看起来它是在CF11中完成的,而不是我想要的。这将循环查询中的列。我想要的分组功能似乎在CF11中可用,但可能不是CF10。Adam Cameron在@GerryGurevich上发布了很棒的CFSCRIPT资源是的,在我发布这篇文章之后,我意识到你在询问更多关于cfloop的group属性的问题,然后在查询本身上循环。但是您发布的示例使用的是标记,因此不确定您是否知道如何在cfscript中循环查询。我能够找到这个使用Java HashMap对数据进行分组的示例——对于那些希望在railo/cf11/中进行分组的人来说,无论最新的os cfml平台是什么,答案都是在cfscript中使用cf标记的一般方法:cfloop query=dogs group=bride{writeOutputdogs.bride;cfloop{writeOutputdogs.name;}