2010-04-05 88 views
6

我在cfloop中查詢。我想獲得一個屬性,但是直到運行時我纔會知道該屬性是什麼。使用#qryResult[MyAttr]#失敗,並顯示錯誤「複雜對象類型不能轉換爲簡單值。」這樣做的語法是什麼?如何在cfloop中查詢ColdFusion中的動態屬性名稱

下面是一個簡化的例子:

<cfquery datasource="TestSource" name="qryResult"> 
    SELECT * FROM MyTable 
</cfquery> 

<cfloop query="qryResult"> 
    <cfset MyAttr="autoid" /> 
    <cfoutput> 
     Test 1: #qryResult.autoid# <br/> <!--- succeeds ---> 
     Test 2: #qryResult[MyAttr]# <br/> <!--- fails ---> 
    </cfoutput> 
</cfloop> 

回答

13
<cfloop query="qryResult"> 
    <cfset MyAttr="autoid" /> 
    <cfoutput> 
    Test 1: #qryResult.autoid# <br/> <!--- succeeds ---> 
    Test 2: #qryResult[MyAttr][qryResult.CurrentRow]# <br/> <!--- succeeds ---> 
    </cfoutput> 
</cfloop> 

CurrentRow在文本語法(query.col)隱含的。它與<cfloop query="...">/<cfoutput query="...">(或在循環外部使用時爲1)的索引相關聯。

在「數組索引」語法(query[col][row])中明確提到它是必要的,因爲query[col]單獨返回列對象(即錯誤引用的「複雜類型」)。

副作用:您可以使用它來隨機訪問循環外的查詢結果(即作爲多維數組)。一旦你知道了你感興趣的行數,你可以直接訪問行。

+0

修復它,謝謝 – Kip 2010-04-05 22:02:36