如何在ColdFusion中循环查询列

时间:2011-12-26 13:33:21

标签: coldfusion coldfusion-9

我的CFC中有查询。该函数包含一个简单的查询。

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

我想这样(水平地)显示我的结果集:

NAME1 NAME2 NAME3 NAME4
  10    20    45    62

有没有办法遍历查询列并为此目的创建虚拟查询?

如果有人这样做,请告诉我。

2 个答案:

答案 0 :(得分:11)

只是想添加Al Everett的解决方案按字母顺序返回列。如果您希望以与您可以使用的查询相同的顺序返回列名称:

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>

答案 1 :(得分:7)

您可以使用随每个查询返回的内置 query.columnList 。 (它是查询的元数据,如 recordCount 。)

你可以这样做:

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

未经测试,但这应该会给你一个想法。