2010-04-05 30 views
6

Tôi đang ở trong một truy vấn cfloop. Tôi muốn lấy một thuộc tính, nhưng tôi sẽ không biết thuộc tính đó sẽ là gì cho đến khi chạy. Sử dụng #qryResult[MyAttr]# không thành công với lỗi "Loại đối tượng phức tạp không thể được chuyển đổi thành giá trị đơn giản". Cú pháp để làm điều này là gì?Cách lấy tên thuộc tính động trong cfloop qua truy vấn trong ColdFusion

Đây là một ví dụ đơn giản:

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

Trả lời

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 là tiềm ẩn trong cú pháp chữ (query.col). Nó được gắn với chỉ số của <cfloop query="...">/<cfoutput query="..."> (hoặc 1 khi được sử dụng ngoài vòng lặp).

Đề cập một cách rõ ràng là cần thiết trong cú pháp "chỉ mục mảng" (query[col][row]), vì chỉ query[col] trả về đối tượng cột (là "loại phức" mà lỗi đề cập đến).

Tác dụng phụ: Bạn có thể sử dụng quyền này để truy cập ngẫu nhiên vào kết quả truy vấn ngoài vòng lặp (tức là dưới dạng mảng đa chiều). Khi bạn biết số hàng mà bạn quan tâm, bạn có thể truy cập trực tiếp vào các hàng.

+0

đã khắc phục sự cố, cảm ơn – Kip

Các vấn đề liên quan