を使用してクエリをループしているときにエラーが発生しましたcfloop
。
クエリで a を使用する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 で定義されていません。
解決済みの名前: 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>
それはすべて1行です:/
上記を呼び出すストアド プロシージャ/関数:
<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>