У меня есть ошибка при циклическом выполнении запроса с использованием cfloop
.Ошибка с неопределенными переменными при циклировании по запросу
Когда я использую cfdump
по запросу (внутри цикла, заметьте), я вижу все данные в порядке. Но когда я пытаюсь получить значение каждой переменной, как обычно, в cfloop
, я получаю сообщение, в котором говорится, что они не определены. Затем я изменил каждую переменную, чтобы конкретно ссылаться на запрос, и теперь проблема в том, что переменная не определена в запросе. Вот код:
<cffunction name="writeCourses">
<cfargument name="recordset" required="yes" type="query">
<cfif recordset.RecordCount NEQ 0>
<cfset temp = "">
<cfoutput>
<cfloop query="recordset">
<!--- <cfdump var="#recordset#"> <cfabort/> --->
<cfset temp = temp & "<strong>#recordset.courseType# #recordset.courseNum# ">
<cfif isDefined("recordset.courseTHM") AND recordset.courseTHM EQ 1>
<cfset temp = temp & "(#left(recordset.courseNum,3)#4) ">
</cfif>
<cfif isDefined("recordset.courseName")>
<cfset temp = temp & "#recordset.courseName# </strong><br>">
</cfif>
<cfset temp = temp & "#recordset.courseDESC#<br>">
<cfset temp = temp & "#recordset.courseHours#<br><br>">
</cfloop>
</cfoutput>
<cfelse>
<cfset temp = "">
</cfif>
<cfreturn temp>
</cffunction>
Так как вы можете видеть, каждая переменная заключена в ##
тегов. Первоначально ни один из них не был отправлен recordset.
, но они все еще не определены. И когда я раскомментирую теги cfdump
и cfabort
, они работают нормально, и я могу увидеть запрос recordset
со всеми данными, как и должно быть.
С другой стороны, я использовал cfloop
с запросом, который работает так, как ожидалось. Кроме того, я не писал этот код, мне нужно его изменить (автор уже не работает здесь).
Вот пример recordset
отвала:
Сообщение об ошибке:
деталь: [пустая строка]
ErrNumber: 0
Сообщение: Элемент COURSETYPE не определено в Recordset.
Resolvedname: RecordSet
Линия ошибка:
<cfset temp = temp & "<strong>#recordset.courseType# #recordset.courseNum# ">
<cfif isDefined("recordset.courseTHM") AND recordset.courseTHM EQ 1>
<cfset temp = temp & "(#left(recordset.courseNum,3)#4) ">
</cfif>
<cfif isDefined("recordset.courseName")>
<cfset temp = temp & "#recordset.courseName# </strong><br>">
</cfif>
Это все одна строка:/
Хранимая процедура/функция вызова выше:
<cffunction name="getCoursesByDept">
<cfargument name="deptCode" required="yes" type="string">
<CFSTOREDPROC procedure="dbo.GetCourses" datasource="WebCatalog">
<CFPROCPARAM type="IN" dbvarname="@deptCode" value="#deptCode#" cfsqltype="CF_SQL_CHAR">
<CFPROCRESULT name="result">
</CFSTOREDPROC>
<cfinvoke method="writeCourses" recordset="#result#" returnvariable="output">
<cfreturn output>
</cffunction>
Не могли бы вы показать нам вывод ' '(или, по крайней мере, часть его, показывающую набор записей)? –
Добавьте несколько примеров сейчас. – mAlenius
Какая переменная и строка также указывают на ошибку? Можете ли вы поделиться фактическим сообщением об ошибке? –