2011-12-26 31 views
9

Tôi có một truy vấn trong CFC của tôi. Hàm này chứa một truy vấn đơn giản như vậy.cách lặp qua các cột truy vấn trong ColdFusion

<cfquery name="qrySE" datasource=#mydatasource#> 
SELECT 
    NAMES,SALARY 
FROM tblTest 
</cfquery> 

Tôi muốn hiển thị resultset của tôi như vậy (theo chiều ngang):

 
NAME1 NAME2 NAME3 NAME4 
    10 20 45 62 

Có cách nào để lặp qua các cột truy vấn của tôi và tạo ra một truy vấn ảo cho mục đích này?

Nếu có ai làm điều này, vui lòng cho tôi biết.

Trả lời

6

Bạn có thể sử dụng truy vấn được tích hợp sẵn.columnList được trả lại cho mỗi truy vấn. (Đó là siêu dữ liệu của các truy vấn, như RecordCount.)

Bạn có thể làm một cái gì đó như thế này:

<table> 
    <cfloop list="#qrySE.columnList#" index="col"> 
    <tr> 
     <cfloop query="qrySE"> 
     <td>#qrySE[col][currentRow]#</td> 
     </cfloop> 
    </tr> 
    </cfloop> 
</table> 

Không thử nghiệm, nhưng điều đó sẽ cho bạn ý tưởng.

10

Chỉ muốn thêm giải pháp của Al Everett trả lại các cột theo thứ tự bảng chữ cái. Nếu bạn muốn để có được các tên cột trở lại theo thứ tự như truy vấn mà bạn có thể sử dụng:

ArrayToList(qrySE.getColumnNames()) 

mà tôi tìm thấy ở đây: http://www.richarddavies.us/archives/2009/07/cf_columnlist.php

bạn có thể sử dụng để tạo ra một chức năng để truy vấn đầu ra một bảng như sau:

<cffunction name="displayQueryAsTable" output="true"> 
    <cfargument name="rawQueryObject" type="query" required="true"> 
    <table > 
    <tr> 
     <cfloop list="#ArrayToList(rawQueryObject.getColumnNames())#" index="col" > 
      <th>#col#</th> 
     </cfloop> 
    </tr> 
    <cfloop query="rawQueryObject"> 
     <tr> 
      <cfloop list="#ArrayToList(rawQueryObject.getColumnNames())#" index="col"> 
       <td>#rawQueryObject[col][currentrow]#</td> 
      </cfloop> 
     </tr> 
    </cfloop> 
    </table>   
</cffunction> 
Các vấn đề liên quan