Coldfusion cfscript是否支持在具有group属性的查询上循环
我在AdobeColdFusion 10中运行以下代码。我想删除所有标记并在脚本中执行此操作。真正的代码更复杂,这只是一个用于演示的shell 有cfscript对此的支持吗?您应该能够复制和粘贴此代码,就像我试图实现的示例一样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
<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;}