2012-03-08 13 views
6

मेरा लक्ष्य "फ़ील्डलिस्ट" में निर्दिष्ट कॉलम डेटा को आउटपुट करना है।क्वेरी मानों को आउटपुट करने का प्रयास करते समय जटिल ऑब्जेक्ट त्रुटि प्राप्त करना

Complex object types cannot be converted to simple values. The expression has requested a variable or an intermediate expression result as a simple value, however, the result cannot be converted to a simple value. Simple values are strings, numbers, boolean values, and date/time values. Queries, arrays, and COM objects are examples of complex values. The most likely cause of the error is that you are trying to use a complex value as a simple one. For example, you might be trying to use a query variable in a cfif tag. The error occurred on line 20.

जब निम्न कार्य करना चाहते:

निम्न त्रुटि हो रही

<cfquery datasource="retailers" name="myQuery"> 
Select * FROM retailer 
WHERE retailer_id = '#url.id#' 
</cfquery> 

<cfset fieldList = "company,phone,phone_secondary,fax,email,website"> 
<cfloop list="#fieldList#" index="i">  
#myQuery[i]# 
</cfloop> 

नहीं चाहिए मुझे एक त्रुटि दिए बिना यह काम? मुझे लगता है कि मैं बस कुछ सरल दिख रहा हूं, मुझे बस कहीं भी जवाब नहीं मिल रहा है।

+0

स्पष्ट करें: क्या आप क्वेरी परिणाम से कॉलम नामों की एक सूची आउटपुट करने का प्रयास कर रहे हैं? या आप बस सबसे स्पष्ट करना चाहते हैं - जो है: क्वेरी के परिणामों (यानी डेटा की सभी पंक्तियों) पर लूप करें और उन्हें आउटपुट करें। मैं पूछता हूं क्योंकि आप * जो चाहते हैं * के बारे में विशिष्ट नहीं हैं, और कोड (लिखित रूप में) संभावित रूप से किसी भी तरह से जा सकता है। –

उत्तर

8

ठीक है, मैं देख रहा हूँ आप अपने आरंभिक कोड ammended, इसलिए यहाँ मेरी प्रतिक्रिया है:

आप कॉलम की एक सूची से अधिक पाशन रहे हैं, और जैसे कि यह एक struct में एक भी तत्व है प्रत्येक स्तंभ का मूल्यांकन करने की कोशिश कर रहा।

हालांकि, एक प्रश्न थोड़ा अलग है: इसे स्ट्रक्चर की एक श्रृंखला के रूप में उपयोग किया जाता है, जो बदले में, डेटा की प्रत्येक पंक्ति के सरणी होते हैं - जैसे वे क्वेरी से वापस आते हैं।

आप सामने कॉलम जानते हुए भी (या उन्हें गतिशील रूप से के रूप में आप ऊपर अपने कोड में जिसका अर्थ है कर रहे हैं में गुजर) के बिना डेटा की पंक्तियों के सभी, उत्पादन करना चाहते हैं, इस प्रयास करें:

<cfoutput query="myQuery"> 
    <cfloop list="#myQuery.ColumnList#" index="thisColumn"> 
    #myQuery[thisColumn][myQuery.CurrentRow]# 
    </cfloop> 
</cfoutput> 

हो जाएगा ताकि आपको आवश्यक आउटपुट प्रदान करें। क्वेरी विशेषता के साथ बाहरी cfoutput आपके द्वारा प्राप्त डेटा की सभी पंक्तियों पर लूप होगा। फिर, प्रत्येक पंक्ति के लिए, आप क्वेरी के कॉलम की सूची में लूप करते हैं, और प्रत्येक कॉलम के लिए, डेटा को आउटपुट करते हैं, myQuery.CurrentRow के माध्यम से पंक्ति निर्दिष्ट करते हैं, जो आपके बाहरी आउटपुट के माध्यम से स्वचालित रूप से आपके लिए पुनरावृत्त होता है।

<cfoutput query="myQuery"> 
    #company# #phone# 
</cfoutput> 

इस वाक्य रचना है थोड़ा कम ऊपर उल्लिखित पाश से महंगा का उपयोग करना:

मैं भी एक पल अब वकालत करने के लिए है कि आप छोरों के भीतर छोरों से दूर रहने की कोशिश सिर्फ उत्पादन अपने मूल्यों को स्पष्ट रूप से काफ़ी होगा, और एक पाश के भीतर।

+0

बहुत विस्तृत और भयानक जवाब! धन्यवाद शॉन, बहुत सराहना की! – timsayshey

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

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