使用cfloop
.
当我cfdump
在查询上使用 a 时(请注意,在循环内),我可以很好地看到所有数据。但是,当我像往常一样尝试获取每个变量的值时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
andcfabort
标记时,它们工作正常,我可以看到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>
这就是一行:/
调用上述内容的存储过程/函数:
<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>