Non utilizzare Evaluate()
per cose del genere! È lento e should be avoided.
<cfloop index="i" from="1" to="4">
<cfset foo = query["foo" & i][query.CurrentRow]>
</cfloop>
Oppure, se ti piace:
<cfloop index="i" from="1" to="4">
<cfset foo = query["foo#i#"][query.CurrentRow]>
</cfloop>
Evaluate()
è per valutare pezzi di codice. Non usarlo per cose che possono essere risolte in modo più elegante in modi linguistici e più appropriati.
EDIT:
Quando si accede Query oggetti con il -syntax "angolo di staffa", è necessario aggiungere l'indice numero (1-based) righe (query["foo#i#"][RowNum]
). Quando si utilizza la tradizionale "punto" -sintassi (query.foo1
), la riga corrente è implicita.
Per accedere esplicitamente alla riga corrente, utilizzare la proprietà QueryObject.CurrentRow
. Ma potrebbe essere qualsiasi intero positivo fino a QueryObject.RecordCount
. Si consiglia un controllo dell'intervallo diverso da CurrentRow
.
Questo apre un campo interessante: È possibile iniziare a utilizzare oggetti di query con "accesso casuale". Precedentemente (prima di CFMX) tutto quello che potevi fare era iterarli dall'inizio alla fine, tirando fuori le cose che cercavi. Ora è come una struttura di dati struct/array annidata che puoi usare in modi diversi.
Sfortunatamente, nessuno di questi lavori - ColdFusion mi dice "il valore foo1 non può essere convertito in un numero". – ClairelyClaire
Oh, capisco. Aspetta, c'è un piccolo problema su come indirizzare le righe di query con la sintassi della parentesi angolare. – Tomalak
Non riesco a vederlo nella documentazione a cui sei collegato - qualche suggerimento? – ClairelyClaire