2012-02-07 87 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系統範圍,像FORMURL,etecetera。所以當你嘗試對它進行字符串比較時,CF會抱怨,因爲它是一個結構。如果LOCAL代表舊代碼中的簡單變量,請嘗試使用其他變量名稱。

更新:從意見,如果LOCAL是在你的查詢中的列名,你既可以使用SQL別名給它另外一個名字:

SELECT Local AS LocalAlias FROM Table 

...或者使用完全限定的變量名稱:

<cfif queryName.local ...> 
+0

如果我不能?本地是數據庫表格屬性的名稱。 :( – Bri 2012-02-07 19:26:30

+0

這段代碼是否在一個cffunction中使用?你可以在查詢中使用別名來替代SELECT Local LocalAlias,然後使用別名,或者你可以嘗試使用完全限定的名稱:例如'' – Leigh 2012-02-07 19:31:07

+0

噢,今天我真的很愚蠢,我忘了你可以做xxx ......但是我改變這種做法並不明智,因爲它在很多地方都有使用。現在我在執行query.local,我認爲當我在中指定查詢時,它會將本地識別爲在查詢範圍內。 – Bri 2012-02-07 19:32:02

相關問題