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