Coldfusion устанавливает динамические столбцы для вывода запроса

Я пытаюсь установить заголовки столбцов динамических запросов, чтобы получить их значения из запроса.

<cfoutput query="qryGetData">

        <cfloop from="-18" to="18" index="i">
        <cfif i GTE 0>
            <cfset variables["target_MonthPlus_#abs(i)#"] = "Testing" />

            <td>
                <cfoutput>#variables["target_MonthPlus_#abs(i)#"]#</cfoutput>
             </td>     
         <cfelse>
            <cfset variables["target_MonthMinus_#abs(i)#"] = "Testing" />



            <td>
            <cfoutput>#variables["target_MonthMinus_#abs(i)#"]#</cfoutput>
             </td>     

         </cfif>  

        </cfloop>

Код, который у меня есть, на самом деле не работает, я нашел его из другого ответа, и я перепробовал все, что мог придумать, и попытался использовать EVALUATE(), хотя я знаю, что не должен его использовать.

Таким образом, в основном мой запрос имеет 37 полей месяца, начиная с target_MonthMinus18 до target_MonthMinus1. А затем от target_MonthPlus0 до target_MonthPlus18. Я позаботился об этом плюсе и минусе с CFIF, как вы можете видеть выше. Таким образом, единственное отличие - это значение месяца.

Ближайшие вещи, которые у меня есть, чтобы динамически называть столбцы, примерно так, но это просто выводит имя столбца, которое будет возвращать target_MonthPlus0, target_MonthPlus1, targetMonthPlus2 и т. д. Но мне нужно использовать это имя, чтобы вернуть фактическое значение столбцы из запроса.

 <cfif i GTE 0>
            <cfset monthInLoop = "target_MonthPlus_" & #ABS(i)#>

            <td>
                <cfoutput>#monthInLoop#</cfoutput>

target_monthMinus18 — это имя столбца, которое может возвращать значение 100 из qryGetData, которое мне нужно отобразить в его td.

target_monthMinus17 — это имя столбца, которое может возвращать значение 95 из qryGetData, которое мне нужно отобразить в его td.

target_monthPlus17 — это имя столбца, которое может возвращать значение 205 из qryGetData, которое мне нужно отобразить в его td.

и так далее... Мы всегда возвращаемся на 18 месяцев назад и на 18 месяцев в будущее, как вы понимаете.

Я нашел несколько вопросов, похожих на этот, и применил их к моему коду, но они почему-то пытаются делать разные вещи или я до сих пор не понимаю, что я делаю неправильно.

Заранее спасибо за вашу помощь :)

PC


person ScrumMaster Guy    schedule 18.10.2016    source источник


Ответы (1)


Я думаю, вы можете слишком много думать об этом. Вы можете получить доступ к своим столбцам непосредственно из запроса, используя что-то вроде этого:

<cfloop query="qryGetData">

      <cfloop from="-18" to="18" index="i">
        <cfif i GTE 0>
            <td>
                <cfoutput>#qryGetData["target_MonthPlus_" & abs(i)][currentrow]#</cfoutput>
             </td>     
         <cfelse>
              <td>
            <cfoutput>#qryGetData["target_MonthMinus_" & abs(i)][currentrow]#</cfoutput>
             </td>     

         </cfif> 
    </cfloop>
</cfloop>

Это использует синтаксис массива запросов CF. Имейте в виду, что у вас также есть qryGetData.columnlist для работы (список всех ваших столбцов). Возможно, вы сможете работать с этим творчески.

person Mark A Kruger    schedule 18.10.2016
comment
Я знал это. Я слишком много думал, испробовав так много неправильных способов. Спасибо за вашу помощь!! :) :) - person ScrumMaster Guy; 18.10.2016