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

JS.*_*JS. 5 coldfusion

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

Mar*_*ona 2

你可以简单地使用

maxrows="12"
Run Code Online (Sandbox Code Playgroud)

不过,我认为您必须这样做的逻辑可能有问题。也许如果您发布一些我们的代码,我可以看一下并提出更好的方法。

maxRows 目前可以解决问题

更新

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

在这种情况下,您将执行以下操作:

<cfoutput query="myQuery" maxRows="12">
Run Code Online (Sandbox Code Playgroud)

更新的更新

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

<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#">
Run Code Online (Sandbox Code Playgroud)

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

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

希望能帮助到你 ;-)