2011-12-26 18 views
9

Mam zapytanie w moim CFC. Funkcja zawiera proste zapytanie jako takie.jak przechodzić między kolumnami zapytań w ColdFusion

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

chcę wyświetlić mój resultset jako takie (w poziomie):

 
NAME1 NAME2 NAME3 NAME4 
    10 20 45 62 

Czy istnieje sposób pętli kolumn mojego zapytania i utworzyć kwerendę wirtualny na ten cel?

Jeśli ktoś to zrobił, proszę dać mi znać.

Odpowiedz

6

Można użyć wbudowanego query.columnList, który jest zwracany przy każdym zapytaniu. (Jest to metadane dla zapytania jak RecordCount.)

Można zrobić coś takiego:

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

nie testowano, ale to powinno dać pomysł.

10

Po prostu chciałbym dodać rozwiązanie Al Everett zwraca kolumny w kolejności alfabetycznej. Jeśli chcieliby Państwo uzyskać nazwy kolumn z powrotem w tej samej kolejności jak w zapytaniu można użyć:

ArrayToList(qrySE.getColumnNames()) 

które znalazłem tutaj: http://www.richarddavies.us/archives/2009/07/cf_columnlist.php

można to wykorzystać, aby utworzyć funkcję zapytań wyjściowych taka tabela:

<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> 
Powiązane problemy