2011-12-26 15 views
9

Tengo una consulta en mi CFC. La función contiene una consulta simple como tal.cómo recorrer las columnas de consulta en ColdFusion

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

Quiero mostrar mi conjunto de resultados como tal (horizontal):

 
NAME1 NAME2 NAME3 NAME4 
    10 20 45 62 

¿Existe una forma de bucle a través de las columnas de mi consulta y crear una consulta virtual para este fin?

Si alguien ha hecho esto, hágamelo saber.

Respuesta

6

Puede usar la consulta query.columnList que se devuelve con cada consulta. (Es metadatos de la consulta, como RecordCount.)

se podría hacer algo como esto:

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

no han sido evaluados, pero que debe darle la idea.

10

Solo quería agregar la solución de Al Everett devuelve las columnas en orden alfabético. Si desea obtener los nombres de columna de nuevo en el mismo orden que la consulta se puede utilizar:

ArrayToList(qrySE.getColumnNames()) 

que encontré aquí: http://www.richarddavies.us/archives/2009/07/cf_columnlist.php

puede utilizar esto para crear una función para consultas de salida a una tabla como esta:

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