2016-10-18 6 views
0

동적 쿼리 열 헤더를 설정하여 쿼리에서 값을 가져 오려고합니다. 내가 가진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 사용했습니다.

그래서 기본적으로 내 쿼리는 target_MonthMinus18부터 target_MonthMinus1까지 37 개월 필드를 가지고 있습니다. 그런 다음 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 제가 필요 qryGetData에서 95의 값을 반환 할 수 열 이름이고 I는 TD

target_monthMinus17에 표시해야 qryGetData 내지 100의 값을 리턴 할 수있는 열 이름 그 TD

target_monthPlus17에 표시하는 것은 나는 그것의 TD에 표시해야 qryGetData에서 205의 값을 반환 할 수 있습니다 열 이름입니다

등등 ... 우리는 항상 다시 18개월 가고있다 지난 18 개월 당신이 말할 수있는 미래.

나는 이와 비슷한 몇 가지 질문을 발견했으며 내 코드에 적용했지만 어떻게 든 그들은 다른 일을하려하거나 여전히 내가 잘못하고있는 것을 이해하지 못합니다. 당신의 도움 :)

PC

답변

3

에 미리

덕분에 난 당신을 통해이 생각을 할 수있다 생각합니다. 다음과 같은 방법을 사용하여 쿼리 내에서 직접 열에 액세스 할 수 있습니다.

<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 (모든 열 목록)가 있음을 기억하십시오. 창의적으로 작업 할 수도 있습니다.

+1

나는 그것을 알고 있었다. 나는 많은 잘못된 방법을 시도함으로써 생각 이상이었다. 당신의 도움을 주셔서 감사합니다!! :) :) –