我想计算变量并在我的代码中的某处显示它。我有一个循环:
<cfloop query="get_serial">
<cfif PROCESS_ID eq attributes.action_id> #SERIAL_NO# </cfif>
</cfloop>
及其查询:
<cfquery name="get_serial" datasource="#dsn3#">
SELECT *
FROM SERVICE_GUARANTY_NEW
WHERE STOCK_ID = #attributes.action_row_id#
ORDER BY SERIAL_NO
</cfquery>
一切正常,但我想计算确切显示多少变量。我实际上想以这种方式这样做,因为我缺少数据库变量。实际上有可能从数据库中获取这些变量的数量,我只是不知道要使用哪些变量。这就是我想手动计算的原因。
答案 0 :(得分:4)
ColdFusion公开了一个变量,它告诉你查询中返回了多少行,而没有运行循环来计算它们:
<cfquery name="get_serial" datasource="#dsn3#">
SELECT *
FROM SERVICE_GUARANTY_NEW
WHERE STOCK_ID = #attributes.action_row_id#
ORDER BY SERIAL_NO
</cfquery>
<cfoutput>There are #get_serial.recordCount# rows.</cfoutput>
<cfoutput query="get_serial">
<p>#get_serial.serial_no#</p>
</cfoutput>
答案 1 :(得分:1)
如果我理解正确,你可以在循环中使用计数器。
<cfset counter = 0 />
<cfloop query="get_serial">
<cfif PROCESS_ID eq attributes.action_id>
#SERIAL_NO#
<cfset counter ++ />
</cfif>
</cfloop>
<cfoutput>Output #counter# times!</cfoutput>
编辑:回答您的跟进问题:
<cfset counter = 0 />
<cfsavecontent variables="myContent">
<cfloop query="get_serial">
<cfif PROCESS_ID eq attributes.action_id>
#SERIAL_NO#
<cfset counter ++ />
</cfif>
</cfloop>
</cfsavecontent>
<cfoutput>
<p>Output #counter# times!</p>
<p>#myContent#</p>
</cfoutput>
希望有所帮助!
答案 2 :(得分:1)
这是另外几个答案,只是为了好玩:),虽然拥有计数器可能是最好的方法,因为你已经产生了使用循环的性能损失。
<cfquery name="getCount" dbtype="query">
SELECT PROCESS_ID FROM get_serial WHERE PROCESS_ID = #attributes.action_id#
</cfquery>
<cfset total = getCount.RecordCount />
使用列表,总是很有趣:
<cfset total = ListValueCount(ValueList(get_serial.PROCESS_ID), attributes.action_id) />
重点是有多种方法可以解决这类问题,所以玩得开心:)