No utilice Evaluate()
de cosas por el estilo! Es lento y should be avoided.
<cfloop index="i" from="1" to="4">
<cfset foo = query["foo" & i][query.CurrentRow]>
</cfloop>
O, si se quiere:
<cfloop index="i" from="1" to="4">
<cfset foo = query["foo#i#"][query.CurrentRow]>
</cfloop>
Evaluate()
es para la evaluación de bits de código. No lo use para cosas que se puedan resolver de manera más elegante en formas integradas y más apropiadas para el lenguaje.
EDIT:
Al acceder Objetos de la consulta con la -Sintaxis "ángulo del soporte", debe añadir el índice de número de fila (basado-1) (query["foo#i#"][RowNum]
). Cuando se usa la tradicional "punto" -sintaxis (query.foo1
), la fila actual está implícita.
Para acceder a la fila actual explícitamente, utilice la propiedad QueryObject.CurrentRow
. Pero podría ser cualquier entero positivo hasta QueryObject.RecordCount
. Se recomienda una verificación de rango para cualquier cosa que no sea CurrentRow
.
Esto abre un campo interesante: puede comenzar a utilizar objetos de consulta con "acceso aleatorio". Anteriormente (antes de CFMX) todo lo que podía hacer era iterarlos de principio a fin, sacando las cosas que buscaba. Ahora es como una estructura de datos estructura/matriz anidada que puede usar de diferentes maneras.
Desafortunadamente, ninguno de esos trabajos - ColdFusion me dice "el valor de foo1 no se puede convertir en un número". – ClairelyClaire
Oh, ya veo. Espere, hay un pequeño inconveniente sobre cómo direccionar las filas de consulta con la sintaxis del paréntesis angular. – Tomalak
No veo eso en la documentación a la que vinculó, ¿alguna sugerencia? – ClairelyClaire