2010-04-05 16 views
6

Bir sorgunun içinde bir cfloop içerisindeyim. Bir özellik almak istiyorum, ancak bu özelliğin çalışma zamanına kadar ne olacağını bilmiyorum. #qryResult[MyAttr]# kullanmak, "Karmaşık nesne türleri basit değerlere dönüştürülemiyor" hatasıyla başarısız oluyor. Bunu yapmak için sözdizimi nedir?ColdFusion'da sorgu üzerinde cfloop'ta dinamik özellik adı nasıl alınır

<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> 

cevap

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 değişmez sözdizimi (query.col) örtüktür:

İşte basitleştirilmiş bir örnektir. <cfloop query="...">/<cfoutput query="..."> (veya bir döngü dışında kullanıldığında 1) dizinine bağlanır. query[col] başına ("kompleks tipi" hata belirtir olan) kolonu nesne verdiği için

açıkça belirten, "dizi indeksi" sözdizimi (query[col][row]) gereklidir.

Yan etki: Bunu, bir döngü dışında bir sorgu sonucuna rastgele erişim için kullanabilirsiniz (ör. Çok boyutlu bir dizi olarak). İlginizi çeken satırların sayısını öğrendikten sonra, satırlara doğrudan erişebilirsiniz.

+0

bunu düzeltildi, teşekkürler – Kip

İlgili konular