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.
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