2010-01-06 13 views
6

¿Existe alguna forma mejor de escribir lo siguiente?Evaluar la función

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

Este bucle asigna todos los campos de la consulta al campo de formulario correspondiente. Entiendo que la función de evaluación es rechazada.

Respuesta

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

?

+1

¡Buena respuesta! Estaba buscando una solución a esto hoy también. –

+0

¿Qué pasa con 'evaluate (" qry. # MyArr [i] .foo # ")' Intenté 'qry [myArr [i] [foo]]' pero no tuve suerte – isurfbecause

+0

@isurfbecause no estoy seguro de lo que está preguntando allí, pero para el objeto de matriz, es '[fieldName] [rowIndex]'. ¿Es 'foo' el rowIndex? si es así, configure 'myArr [1]' primero en algunas var, luego use eso. A CF podría no gustarle anidado '[]' – Henry

4

Suponiendo que devuelve un único conjunto de registros, lo siguiente funcionará.

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

Técnicamente, no hay nada de malo en eso. Pero también puede recorrer todo el camino y usar la notación de matriz para ambos lados del cfset;) – Leigh

+0

Buen punto. :). – jarofclay

1

Tangencial, pero si estaba recorriendo varias filas de una consulta, podría usar la variable currentRow en el objeto de consulta para hacer lo mismo que la respuesta aceptada.

<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> 
+0

Muy interesante. Me estoy confundiendo al mezclar la notación estructural y la notación de arreglos, pero investigaré esto. ¡Gracias! –

+0

Ya lo siento, {} es una abreviatura de StructNew() y [] es una abreviatura de ArrayNew (1) – Bialecki

Cuestiones relacionadas