Я пытаюсь создать функцию для создания CSV-файлов из запросов. После того, как я выполню запрос, я перебираю его и добавляю поля каждой строки в объект StringBuffer. Для этого я помещаю имена столбцов в массив:
<cfset indexes = #ListToArray(Arguments.header)# />
где аргумент в настоящее время является строкой типа:
"col1, col2, col3...."
Я подтвердил, что запрос и массив являются тем, чем они должны быть, путем создания дампа.
Проблема возникает при циклическом просмотре результатов запроса. Дано:
<cfset indexes_length = #ArrayLen(indexes)# />
<cfloop query="query_for_csv">
<cfloop index="i" from="1" to="#indexes_length#">
<cfset attr = #indexes[i]# />
<cfset sbOutput.Append(
"#query_for_csv[attr][query_for_csv.CurrentRow]#") />
</cfloop>
</cfloop>
Перед выводом сообщения об ошибке выводится только первое значение первой строки:
[Table (rows 10 columns col1, col2, col3):
[col1: coldfusion.sql.QueryColumn@6f731eba]
[col2: coldfusion.sql.QueryColumn@6ee67e7f]
[col3: coldfusion.sql.QueryColumn@5c6647cb]
is not indexable by col2
Если я заменим переменную # attr # на литерал "col2":
#query_for_csv['col2'][query_for_csv.CurrentRow]#
затем цикл проходит без проблем и выплевывает все значения, проиндексированные 'col2'. Есть идеи?