开发者

Use count() function in ColdFusion query of query

开发者 https://www.devze.com 2023-03-28 14:42 出处:网络
I wanted to use count() function i开发者_开发知识库n ColdFusion Query object. Here is my code and test:

I wanted to use count() function i开发者_开发知识库n ColdFusion Query object.

Here is my code and test:

<cfset x = querynew("id,name")>

<cfquery name="y" dbtype="query">
    select count(*) as total from x
</cfquery>

<cfoutput>Test1: #y.total#</cfoutput>

<cfset temp = QueryAddRow(x)>
<cfset Temp = QuerySetCell(x, "id", 1)>
<cfset Temp = QuerySetCell(x, "Name", "Vikas")>

<cfquery name="y" dbtype="query">
    select count(*) as total from x
</cfquery>

<cfoutput>Test2: #y.total#</cfoutput>

Should I use convert function? Like if total is [enpty string] then result should be 0. Or is there any other best/proper way to do that?


It does seem like this is a bug, however there is an easy way around it. Simply wrap the y.total in val(), so it would read:

<cfoutput>Test1: #val(y.total)#</cfoutput> 
<cfoutput>Test2: #val(y.total)#</cfoutput>

val() will return 0 if an empty string is passed to it.


I think you've found a bug in CF here (perhaps log it @ http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html).

The first query should return 0, not [nothing]!

In your simple example, I think just dispense with the QoQ entirely, and just use x.recordCount.

But obviously this is not much chop if you have a WHERE filter in your QoQ, in which case You're gonna need to do something like you suggest. I can't see a better approach here.

If you raise that bug with Adobe, let us know the bug ref so we can vote for it ;-)

-- Adam


If you just want the number of rows in de query-object use: #x.recordcount#

0

精彩评论

暂无评论...
验证码 换一张
取 消