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,

Foi útil?

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!

http://www.cfquickdocs.com/cf8/#cftable :)

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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top