如何在ColdFusion中循环查询列

yay*_*aya 11 coldfusion coldfusion-9

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

<cfquery name="qrySE" datasource=#mydatasource#>
SELECT
  NAMES,SALARY
FROM tblTest
</cfquery>
Run Code Online (Sandbox Code Playgroud)

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

NAME1 NAME2 NAME3 NAME4
  10    20    45    62

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

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

gna*_*ian 11

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

ArrayToList( qrySE.getColumnNames() )
Run Code Online (Sandbox Code Playgroud)

我在这里找到了: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>
Run Code Online (Sandbox Code Playgroud)


ale*_*ale 7

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

你可以这样做:

<table>
  <cfloop list="#qrySE.columnList#" index="col">
    <tr>
      <cfloop query="qrySE">
        <td>#qrySE[col][currentRow]#</td>
      </cfloop>
    </tr>
  </cfloop>
</table>
Run Code Online (Sandbox Code Playgroud)

没有经过测试,但这应该会给你一个想法.