Я должен циклично выполниться по запросу точно 12 раз для завершения строк в форме, но редко будет возврат запроса 12 строк. Атрибут cfquery endRow не вынуждает цикл продолжать идти, если результат <12. Если это сделало, который будет идеален для использования чего-то как запрос cfloop = "myQuery" endRow = "12"... 2 опции, которые я имею теперь, состоят в том, чтобы пропустить цикл и выписать все 12 строк, но это приводит к большому количеству дублирующего кода (существует 20 столбцов), или сделайте запрос запросов для каждой строки, которая походит на большую потраченную впустую обработку. Спасибо за любые идеи.
Вы можете просто использовать
maxrows="12"
Хотя, я думаю, что в вашей логике может быть что-то не так, раз вам приходится это делать. возможно, если вы опубликуете часть нашего кода, я смогу взглянуть и предложить лучший подход.
maxRows пока подойдет
UPDATE
Забыл упомянуть, maxrows нужно использовать с "cfoutput query", так как cfloop query его не поддерживает.
В этом случае вы сделаете что-то вроде:
<cfoutput query="myQuery" maxRows="12">
UPDATE of 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 строк в вашем наборе записей)
Это имитирует набор записей, просто чтобы вы могли скопировать и вставить код и увидеть результаты.
надеюсь, это поможет ;-)
Если вас не интересуют значения столбцов, вы можете попробовать что-нибудь вроде этого ...
<cfquery NAME="testQuery" datasource="#DB#" >
SELECT
SOMETHING
FROM
SOMETHING
</cfquery>
<cfif testQuery.recordcount LT 12>
<cfset temp = QueryAddRow( testQuery, 12- testQuery.recordcount)>
</cfif>