ColdFusion条件记录计数

ColdFusion条件记录计数,coldfusion,conditional,Coldfusion,Conditional,好的,所以用户。。。这里有一个看似不可能出错的条件语句。这很简单,但是,我不明白为什么它不能按预期的方式工作 <cfoutput query="checkForAd"> <!--- also used the line <cfif RecordCount eq 0> ---> <cfif checkForAd.RecordCount eq 0> <!--- Display some message. (

好的,所以用户。。。这里有一个看似不可能出错的条件语句。这很简单,但是,我不明白为什么它不能按预期的方式工作

<cfoutput query="checkForAd">
        <!--- also used the line <cfif RecordCount eq 0> --->
    <cfif checkForAd.RecordCount eq 0>
        <!--- Display some message. (Perhaps using a table, undecided) --->
    <cfelse>
        <!--- Display some other message. (Happens to be a table) --->
    </cfif>
</cfoutput>


当RecordCount返回的数字大于0时,else案例将正确显示。当RecordCount返回0时,将不显示任何内容,窗体将沿着其路径继续。我感到非常沮丧,因为这应该很简单…

如果查询集为空,输出将不会返回任何结果。尝试:

<cfif checkForAd.RecordCount eq 0>
    <!--- Display some message. (Perhaps using a table, undecided) --->
<cfelse>
    <cfoutput query="checkForAd">
        <!--- Display some other message. (Happens to be a table) --->
    </cfoutput>
</cfif>

我假设你想返回一些记录。。。如果只是返回一个,则不需要使用
query=“checkForAd”
。您只需在
中引用查询和变量即可

编辑

这里有一种访问查询变量的方法:
QueryName[“ColumnName”][RowNum]


(当你想扩展你的编码时,你可以在查询变量上做很多事情。这里有很多不同的方法)

正如nykash所指出的,如果没有记录,
cfoutput查询(或
cfloop查询
)的主体永远不会执行,因此,在一个记录计数内检查零记录计数永远不会为真

但是,我发现以下示例更具可读性:

<cfif NOT checkForAd.RecordCount >
    <!--- Display some message. --->
</cfif>

<cfoutput query="checkForAd">
        <!--- loop through data --->
</cfoutput>

它可能看起来不是孤立的,但我认为它更干净,更容易看到正在发生的事情,特别是当与其他代码结合时


特别是在RecordCount检查中,如果我关心具体的数字,那么我将使用EQ(或NEQ/GT/etc),但是如果我只关心“有记录”与“没有记录”,那么我将使用CFML提供的隐式布尔转换来简化代码。这确实使我在使用公共二进制选择或更重要的二进制选择时更容易识别,因此在代码中导航更容易。

非常感谢。实际上,我只返回了一张唱片,但是我对ColdFusion以及一般的产品开发都是新手。谢谢你的其他建议。:)我的荣幸。。。请随意接受答案。这将有助于解决未来的问题。我会的,我只是在等待接受一个问题的时限到了。酷,谢谢。顺便说一句,我刚刚发布了edit,为您指出了访问查询变量的正确方向。值得指出的是,RowNum通常默认为1,因此您只需
QueryName[“ColumnName”]
(如果列名中没有特殊字符,也可以
QueryName.ColumnName
)。不过也要注意,如果您已循环查询(或正在添加新记录),则row num将是最后一条记录,而不是第一条记录。