ColdFusion Условная записьCount - PullRequest
       11

ColdFusion Условная записьCount

4 голосов
/ 27 сентября 2011

Хорошо, ТАК пользователи ... Вот, казалось бы, невозможно ошибиться условным утверждением.Однако это очень просто, я не могу понять, почему это не сработает так, как ожидается.

<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, остальное регистр отображается правильно.Когда RecordCount возвращает 0, ничего не отображается, и форма продолжает свой путь.Я очень расстроился, потому что это должно быть довольно просто ...

Ответы [ 2 ]

12 голосов
/ 27 сентября 2011

Вывод не вернет никаких результатов, если набор запросов пуст. Попробуйте:

<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" не требуется. Вы можете просто ссылаться на запрос и переменные в <cfoutput></cfoutput>.

Редактировать

Вот один из способов доступа к переменной запроса: QueryName["ColumnName"][RowNum]

(По мере того, как вы пытаетесь расширить свой код, вы можете многое сделать с переменными запроса. Существует большое изложение различных подходов в ColdFusion и получении данных из MySQL )

3 голосов
/ 27 сентября 2011

Как указал nykash, тело cfoutput query (или cfloop query) никогда не будет выполнено, если нет записей, поэтому проверка на нулевое количество записей никогда не будет истинной внутри одного.

Тем не менее, я нахожу следующий пример более читабельным:

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

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

Это может показаться не слишком изолированным, но я думаю, что это немного чище и легче увидеть, что происходит, особенно в сочетаниис другим кодом.

В частности, при проверке RecordCount, если я забочусь о конкретном номере, я буду использовать EQ (или NEQ / GT / и т. д.), но если я буду заботиться только о том, чтобы "иметь записи" против "не"имея записи ", тогда я использую неявное логическое преобразование, которое CFML предоставляет, чтобы упростить код.Это действительно облегчает идентификацию, когда я использую общий двоичный выбор или более значимый, поэтому навигация по коду становится проще.

...