如何循环查询特定次数可能大于结果?

时间:2010-03-20 21:30:52

标签: coldfusion

我需要将查询完全循环12次才能完成表单中的行,但查询很少会返回12行。如果结果为< cfquery endRow属性不强制循环继续运行12.如果确实如此,那将是理想的使用像cfloop query =“myQuery”endRow =“12”...... 我现在拥有的两个选项是跳过循环并写出所有12行,但这会产生大量重复的代码(有20列),或者对每行进行查询查询,这看起来像浪费了很多处理。 谢谢你的任何想法。

2 个答案:

答案 0 :(得分:2)

您只需使用

即可
maxrows="12"

虽然,我认为您的逻辑可能存在问题。也许如果你发布我们的一些代码,我可以看看建议一个更好的方法。

maxRows现在可以解决这个问题了

<强>更新

忘记提及,maxrows必须与“cfoutput query”一起使用,因为cfloop查询不支持它。

在这种情况下,你会做一些像:

<cfoutput query="myQuery" maxRows="12">

UPDATE更新

在准确理解了你想要的内容之后,我编写了以下代码,这几乎是我认为你需要的代码:

<cfscript>
    qryTest = QueryNew("name,email");
    newRows = QueryAddRow(qryTest,5);

    tmp = querySetCell(qryTest, 'name', 'John', 1);
    tmp = querySetCell(qryTest, 'email', 'John@email.com', 1);

    tmp = querySetCell(qryTest, 'name', 'Paul', 2);
    tmp = querySetCell(qryTest, 'email', 'Paul@bob.com', 2);

    tmp = querySetCell(qryTest, 'name', 'George', 3);
    tmp = querySetCell(qryTest, 'email', 'George@bob.com', 3);

    tmp = querySetCell(qryTest, 'name', 'Ringo', 4);
    tmp = querySetCell(qryTest, 'email', 'Ringo@bob.com', 4);

    tmp = querySetCell(qryTest, 'name', 'Yoko', 5);
    tmp = querySetCell(qryTest, 'email', 'Yoko@bob.com', 5);
</cfscript>

<cfdump var="#qryTest#">

<form name="test">
    <cfoutput>
        <cfloop from="1" to="12" index="ii">
            <cfif ii GT qryTest.recordCount>
                <cfset tmp = QueryAddRow( qryTest, ii)>
            </cfif>
            Name: <input type="text" name="name_#ii#" value="#qryTest.name[ii]#"><br />
            Wmail: <input type="text" name="email_#ii#" value="#qryTest.email[ii]#"><br /><br />
        </cfloop>
    </cfoutput>
</form>

<cfdump var="#qryTest#">

如果有必要,这将动态地向您的查询中添加新行(例如,如果您的记录集中没有12行)

它正在模仿记录集,因此您可以复制并粘贴代码并查看结果。

希望它有所帮助; - )

答案 1 :(得分:1)

如果您不关心列值,可以尝试这样的事情......

 <cfquery NAME="testQuery" datasource="#DB#" >
    SELECT 
       SOMETHING 
    FROM
      SOMETHING
 </cfquery>

 <cfif testQuery.recordcount LT 12>

   <cfset temp = QueryAddRow( testQuery, 12- testQuery.recordcount)>

 </cfif>