cfloop для получения общих целочисленных значений из SQL

Я довольно новичок в Coldfusion. Я пытаюсь запустить cfloop, в котором я просматриваю месяцы из таблицы PostgreSQL и добавляю целочисленные значения в ячейки во время цикла. Ячейки заполнены на весь год, поэтому я не хочу их всех, только с января по настоящее время. Мой код выглядит так, но я получаю сообщение «Значение target.data_1 не может быть преобразовано в число». ошибка при запуске.

<cfset ytdGoal = 0>
<cfset mymonth = month(now())>
<cfloop from="1" to="#mymonth#" index="myindex">
<cfset running = ("goals.data_"&myindex)>   
<cfset ytdGoal = ytdGoal + #running#>
</cfloop>

Если я делаю оценку, я получаю количество месяцев просто отлично. Столбцы PostgreSQL настроены на целочисленные значения. Любая помощь приветствуется.


person robbysan    schedule 10.10.2017    source источник
comment
Вместо того, чтобы делать это в cfloop, я бы сделал это в SQL, а затем вывел это.   -  person Shawn    schedule 10.10.2017
comment
Поскольку ваш код написан, ytdGoal является целым числом, но running буквально "goals.data_1", поэтому он терпит неудачу.   -  person Shawn    schedule 10.10.2017
comment
Можете ли вы привести простой пример данных, с которыми вы работаете, или goals запроса, который вы используете? Сглаживаются ли данные во время запроса или они сохраняются таким образом?   -  person Shawn    schedule 10.10.2017
comment
Вместо цикла вы можете использовать запрос запросов.   -  person Dan Bracuk    schedule 11.10.2017


Ответы (1)


Вы можете использовать свой запрос таким образом, если я понимаю, что вы пытаетесь сделать правильно. Это избавляет вас от использования оценки и дает значение, когда имена столбцов являются динамическими.

<cfset running = goals["data_#myindex#"][currentRow]>

Вот информация об использовании запросов ColdFusion в качестве структур https://www.raymondcamden.com/2009/11/25/Quick-Tip-Treating-a-ColdFusion-Query-like-a-Structure/

Надеюсь это поможет.

person Dakuwan    schedule 10.10.2017
comment
Не говоря уже о том, что вам также нужно будет выполнить запрос cfoutput или запрос cfloop вокруг вашего текущего цикла, если вы имеете дело с более чем одной строкой, но это должно помочь вам начать работу. - person Dakuwan; 10.10.2017
comment
вы можете отредактировать свой ответ, если хотите добавить больше информации. - person Dan Bracuk; 11.10.2017