Pergunta

Existe uma maneira melhor de escrever o seguinte?

<cfloop list="#qry.Columnlist#" index="FieldName">
   <cfset "form.#FieldName#" = Evaluate("qry.#FieldName#")>
</cfloop>

Esse loop está atribuindo todos os campos na consulta a um campo de formulário correspondente. Eu entendo que a função de avaliação é evitada.

Foi útil?

Solução

<cfloop list="#qry.Columnlist#" index="FieldName">
    <cfset form[FieldName] = qry[FieldName][1]>
</cfloop>

?

Outras dicas

Supondo que você esteja retornando um único conjunto de registros, o seguinte funcionará.

<cfloop list="#qry.Columnlist#" index="FieldName">
<cfset "form.#FieldName#" = qry[FieldName][1]>
</cfloop>

Tangencial, mas se você estivesse em várias fileiras de uma consulta, você poderia usar o currentRow variável no objeto de consulta para fazer a mesma coisa que a resposta aceita.

<cfset var someStruct = {} />
<cfset var colummnList = queryObj.columnList />

<cfloop query="queryObj">
    <cfset someStruct[currentRow] = {} />        

    <cfloop list="#columnList#" index="fieldName">
        <cfset someStruct[currentRow][fieldName] = queryObj[fieldName][currentRow] />
    </cfloop>
</cfloop>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top