请忽略此职位。 我做了我的问题在这里的一个更清楚的例子: 有CFLOOP错误当项丢失
我运行下面的代码CFLOOP。
<cfset data = queryNew("sid,firstname,lastname,age","integer,varchar,varchar,integer")>
<cfloop index="x" from="1" to="50">
<cfset queryAddRow(data)>
<cfset querySetCell(data,"sid",x)>
<cfset querySetCell(data,"firstname","#first[x]#")>
<cfset querySetCell(data,"lastname","#last[x]#")>
<cfset querySetCell(data,"age","#studentage[x]#")>
</cfloop>
<cfoutput query="data">
#sid# - #firstnamet# #lastname# - #age#<br />
</cfoutput>
变量first[x]
last[x]
和studentage[x]
被从外部数据源拉出,与X
为循环索引。 需要注意的是CFLOOP有50个条目。
当有可用数据,代码精美的作品。 然而,当有丢失的数据,代码休息。 我的意思是,如果输入11没有为上市名称first[x]
可变我相处的线错误"Element first is undefined. The error occurred on line 5
(第5行是第一名的条目)。
当发生这种情况,我想省略入口11(和所有其他条目引起的误差)从我的结果,并防止错误显示。 我怎样才能做到这一点?
澄清:请假设数据定义。 它,因为我使用的是外部数据源变得有点毛。 但我要说的是,记录1到10显示出来。 当其进入11的转向,当错误出现的。
在循环使用外部数据库的总记录应防止错误。
<cfloop index="x" from="1" to="#ExternalDatabaseQuery.RecordCount#">
更好的解决方案,假设你有在内存中的查询,将使用查询的查询。
<cfquery dbtype='query' name='data'>
SELECT SID, First AS FirstName, Last AS LastName, Age AS StudentAge
FROM ExternalDatabaseQuery
</cfquery>
迈克,道歉,如果我误解你以后在做什么,但它似乎是一些基本的条件语句可以做的工作。 下面编辑你的代码仅仅是一个建议,至于如何去了解它(也就是完整的代码库可以决定的东西,当然略有不同)。
<cfset data = queryNew("sid,firstname,lastname,age","integer,varchar,varchar,integer")>
<cfloop index="x" from="1" to="50">
<cfif isDefined("first[x]") AND isDefined("last[x]") AND isDefined("studentage[x]")>
<cfset queryAddRow(data)>
<cfset querySetCell(data,"sid",x)>
<cfset querySetCell(data,"firstname","#first[x]#")>
<cfset querySetCell(data,"lastname","#last[x]#")>
<cfset querySetCell(data,"age","#studentage[x]#")>
</cfif>
</cfloop>
<cfoutput query="data">
#sid# - #firstnamet# #lastname# - #age#<br />
</cfoutput>
这里的主要问题(也许这不是你的问题)是,这将输出50 - 错误。 所以,如果有3个错误(即,没有发现数据),你有47项产出,而不是50。如果这是一个问题,请添加评论...有保障一些替代方法,你总是有50个项目输出。