Como imprimir todo o resultado sem usar resultados.ColumnName em ColdFusion
-
10-07-2019 - |
Pergunta
Como imprimir todo o resultado sem usar resultados.ColumnName em ColdFusion
para ex:-
Eu tenho <cfquery name="getProductId">
select productId
from product
</cfquery>
Na tabela de produtos, tenho 2 colunas com product_name e product_id.
Como posso imprimi -los sem usar getProductId.product_name getProductid.product_id
Obrigado,
Solução
O que você está tentando alcançar? Se você está procurando uma maneira de produzir resultados de consultas com base em uma consulta cujos nomes de colunas você não conhece, como ...
<cfquery name="queryName" ...>
select * from product
</cfquery>
... então você pode usar o queryName.ColumnList
Variável, que retorna uma lista separada por vírgula de todos os nomes de colunas. Posteriormente, você pode iterar sobre esta lista e sair conforme necessário.
Por exemplo, para obter uma saída simples de tabela HTML:
<table border=1>
<cfloop from="0" to="#queryName.RecordCount#" index="row">
<cfif row eq 0>
<tr>
<cfloop list="#queryName.ColumnList#" index="column" delimiters=",">
<th><cfoutput>#column#</cfoutput></th>
</cfloop>
</tr>
<cfelse>
<tr>
<cfloop list="#queryName.ColumnList#" index="column" delimiters=",">
<td><cfoutput>#queryName[column][row]#</cfoutput></td>
</cfloop>
</tr>
</cfif>
</cfloop>
</table>
Desculpas se não é isso que você quis dizer!
Outras dicas
Você pode esclarecer o que significa "sem usar o nome da coluna"?
Talvez você queira usar o getProductId.columnList atributo?
Pequeno exemplo do meu código antigo que converte a consulta na matriz (um pouco de detalhes despojados e altera os nomes VAR, mas mostra a ideia):
<cfset arrRecordSet = ArrayNew(1)>
<cfloop query="qGetSomething">
<cfset record = StructNew()>
<cfloop list="#qGetSomething.ColumnList#" index="field">
<cfset record[field] = qGetSomething[field][qGetSomething.CurrentRow]>
</cfloop>
<cfset ArrayAppend(arrRecordSet,record)>
</cfloop>
Editar: Exemplo aprimorado para se livrar da variável da linha, conforme notado corretamente nos comentários.
Consulta à tabela HTML? Há uma tag para isso!
<CFTable>
FTW!
Para expandir o meu comentário para a resposta de Chris, aqui está a versão mais simples com as tags de tead/tbody que perdem: adicionadas:
<cfoutput>
<table>
<thead>
<tr>
<cfloop index="ColName" list="#MyQuery.ColumnList#">
<th>#ColName#</th>
</cfloop>
</tr>
</thead>
<tbody>
<cfloop query="MyQuery">
<tr>
<cfloop index="ColName" list="#MyQuery.ColumnList#">
<td>#MyQuery[ColName][MyQuery.CurrentRow]#</td>
</cfloop>
</tr>
</floop>
</tbody>
</table>
</cfoutput>