是否支持使用group属性循环查询的cfscript

时间:2014-09-16 12:20:41

标签: coldfusion coldfusion-10

我在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" />

2 个答案:

答案 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(如示例所示)。