2012-02-07 4 views
2

У меня есть несколько мест, которые имеют некоторый код, как это:Модернизированный ColdFusion 9 получает странную ошибку Cfif

<cfinvoke component="#application.path#cfc/eval_faculty" method="getPresentations" returnvariable="presentations"> 
    <cfinvokeargument name="id" value="#eval_id#"> 
    <cfinvokeargument name="evalYear" value="#eval_semester#"> 
    <cfinvokeargument name="department" value="#general.dept#"> 
</cfinvoke> 

<cfset prescheck = 0> 
<cfloop query="presentations"> 
    <cfif local eq "" and regional eq "" and national eq "" and international eq ""> 
     <cfset prescheck = prescheck+1> 
    </cfif> 
</cfloop> 

Я получаю эту ошибку:

Complex object types cannot be converted to simple values. 

Ни одно из этих значений в Cfif оператор представляет собой сложный объект.

Это работало отлично в ColdFusion 8. Мы только что повышен до ColdFusion 9 ...

ошибка происходит на линии с <cfif local eq "" ... >

Любые идеи?

ответ

7
<cfif local eq "" 

Это может быть, что LOCAL теперь системную область в CF9, как FORM, URL, etecetera. Поэтому CF жалуется, когда вы пытаетесь выполнить сравнение строк, потому что это структура. Если LOCAL представляет собой простую переменную в вашем старом коде, попробуйте использовать другое имя переменной.

Update: Из комментариев, если LOCAL это имя столбца в запросе, вы можете либо использовать SQL псевдоним, чтобы дать ему другое имя:

SELECT Local AS LocalAlias FROM Table 

... или использовать полное имя переменной:

<cfif queryName.local ...> 
+0

Что делать, если я не могу? Локальное - это имя атрибута таблицы базы данных. :( – Bri

+0

Этот код используется внутри функции? Вы всегда можете использовать псевдоним столбца в вашем запросе 'SELECT Local AS LocalAlias'. Затем используйте псевдоним. Или вы можете попробовать использовать полное имя: ie' '. – Leigh

+0

О, да. Я так глуп сегодня. Я забыл, что вы можете делать AS xxx ... но мне не будет разумно менять это, поскольку оно используется в нескольких местах. теперь я делаю query.local.Я понял, что он будет распознавать локальный, как находящийся в указанной области запроса, когда я задал запрос в . – Bri

Смежные вопросы