我在Adobe ColdFusion 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" />
答案 0 :(得分:4)
回答“不可能”。有解决方法,但我对此不感兴趣。 RAILO做到了,Adobe CF11做到了。但在ACF10中不可行
答案 1 :(得分:-1)
有以下example of looping over a query in the Using CFScript statements documentation。如果您在查询中定义分组,那么它可能会为您提供所需的内容。
for-in构造(用于查询)
与使用for-in构造循环数组和结构类似,可以在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(如示例所示)。