как перебрать столбцы запросов в ColdFusion - PullRequest
11 голосов
/ 26 декабря 2011

У меня есть запрос в моем CFC. Функция содержит простой запрос как таковой.

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

Я хочу отобразить свой набор результатов как таковой (по горизонтали):

NAME1 NAME2 NAME3 NAME4
  10    20    45    62

Есть ли способ перебрать столбцы моего запроса и создать виртуальный запрос для этой цели?

Если кто-то сделал это, пожалуйста, дайте мне знать.

Ответы [ 2 ]

11 голосов
/ 22 июня 2012

Просто хотел добавить решение Аль Эверетт возвращает столбцы обратно в алфавитном порядке.Если вы хотите вернуть имена столбцов в том порядке, в котором вы можете использовать запрос:

ArrayToList( qrySE.getColumnNames() )

, который я нашел здесь: http://www.richarddavies.us/archives/2009/07/cf_columnlist.php

, вы можете использоватьэто, чтобы создать функцию для вывода запросов в таблицу, как это:

<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>
7 голосов
/ 27 декабря 2011

Вы можете использовать встроенный query.columnList , который возвращается с каждым запросом. (Это метаданные запроса, например recordCount .)

Вы могли бы сделать что-то вроде этого:

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

Не проверено, но это должно дать вам идею.

...