2010-01-06 6 views
6

Gibt es eine bessere Möglichkeit, Folgendes zu schreiben?Funktion auswerten

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

Diese Schleife wird jedes Feld in der Abfrage an einen entsprechenden Formularfeld zugeordnet wird. Ich verstehe, dass die Evaluierungsfunktion gemieden wird.

Antwort

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

?

+1

Gute Antwort! Ich habe auch heute nach einer Lösung gesucht. –

+0

Was ist mit 'evaluate (" qry. # MyArr [i] .foo # ")' Ich versuchte 'qry [myArr [i] [foo]]' aber kein Glück – isurfbecause

+0

@isurfbecause nicht sicher, was Sie dort fragen, aber Für Array-Objekte lautet es "[fieldName] [rowIndex]". Ist 'foo' der rowIndex? Wenn ja, setze zuerst 'myArr [1]' auf einige Var und benutze dann diese. CF mag verschachtelte '[]' nicht mögen – Henry

4

Angenommen, Sie geben ein einzelnes Recordset zurück, dann funktioniert das Folgende.

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

Technisch ist daran nichts falsch. Aber Sie können auch den ganzen Weg gehen und Array-Notation für beide Seiten des cfset verwenden;) – Leigh

+0

Guter Punkt. :). – jarofclay

1

Tangential, aber wenn Sie mehrere Zeilen einer Abfrage durchlaufen, könnten Sie die currentRow Variable im Abfrageobjekt verwenden, um dasselbe wie die akzeptierte Antwort zu tun.

<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

Sehr interessant. Ich bin verwirrt, weil ich Struct-Notation und Array-Notation mische, aber ich werde das untersuchen. Vielen Dank! –

+0

Yah Entschuldigung, {} ist eine Abkürzung für StructNew() und [] ist eine Abkürzung für ArrayNew (1) – Bialecki