2010-04-05 14 views
6

में क्वेरी पर cfloop में गतिशील विशेषता नाम कैसे प्राप्त करें मैं एक क्वेरी पर cfloop के अंदर हूं। मैं एक विशेषता प्राप्त करना चाहता हूं, लेकिन मुझे नहीं पता कि यह विशेषता रनटाइम तक क्या होगी। #qryResult[MyAttr]# का उपयोग कर त्रुटि के साथ विफल रहता है "जटिल ऑब्जेक्ट प्रकार को सरल मानों में परिवर्तित नहीं किया जा सकता है।" ऐसा करने के लिए वाक्यविन्यास क्या है?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

संबंधित मुद्दे