CFLOOP错误丢失条目(CFLoop Error For Missing Entries)

2019-07-29 04:00发布

请忽略此职位。 我做了我的问题在这里的一个更清楚的例子: 有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的转向,当错误出现的。

Answer 1:

在循环使用外部数据库的总记录应防止错误。

<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>


Answer 2:

迈克,道歉,如果我误解你以后在做什么,但它似乎是一些基本的条件语句可以做的工作。 下面编辑你的代码仅仅是一个建议,至于如何去了解它(也就是完整的代码库可以决定的东西,当然略有不同)。

<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个项目输出。



文章来源: CFLoop Error For Missing Entries