Coldfusion - variabler Feldname beim Durchlaufen von Datenbankabfrageergebnissen

7

Ich habe eine Reihe von Spaltennamen in einer Tabelle - z. foo1, foo2, foo3, foo4. Ich möchte auf diese Spaltennamen dynamisch durch eine Schleife verweisen:

%Vor%

Das obige funktioniert nicht - ColdFusion löst einen Fehler "Variable nicht definiert" aus, obwohl query.foo1 ein gültiger Verweis auf die Abfrageergebnisse ist. Wie sonst kann ich das tun?

    
ClairelyClaire 30.06.2009, 15:23
quelle

2 Antworten

21

Benutze Evaluate() nicht für solche Dinge! Es ist langsam und sollte vermieden werden .

%Vor%

Oder, wenn Sie möchten:

%Vor%

Evaluate() dient zum Auswerten von Code-Bits. Verwenden Sie es nicht für Dinge, die auf sprachintegrierte, geeignetere Weise eleganter gelöst werden können.

BEARBEITEN:

Beim Zugriff auf Query-Objekte mit der "eckigen Klammer" -Syntax müssen Sie den (1-basierten) Zeilennummernindex anhängen ( query["foo#i#"][RowNum] ). Bei Verwendung der traditionellen "Punkt" -Syntax ( query.foo1 ) ist die aktuelle Zeile implizit.

Um explizit auf die aktuelle Zeile zuzugreifen, verwenden Sie die Eigenschaft QueryObject.CurrentRow . Aber es könnte jede positive Ganzzahl bis zu QueryObject.RecordCount sein. Eine Bereichsüberprüfung wird für alles andere als CurrentRow empfohlen.

Dies öffnet ein interessantes Feld: Sie können beginnen, Abfrageobjekte mit "Direktzugriff" zu verwenden. Zuvor (vor CFMX) war alles, was Sie tun konnten, sie von Anfang bis Ende zu durchlaufen und die Dinge herauszuziehen, nach denen Sie suchen. Jetzt ist es wie eine geschachtelte Strukturstruktur, die Sie auf verschiedene Arten verwenden können.

    
Tomalak 30.06.2009, 15:42
quelle
2

Sie sind sehr nah dran. Versuchen Sie Folgendes:

%Vor%     
Mike Jr 30.06.2009 15:27
quelle

Tags und Links