0

我正在尝试设置动态查询列标题以从查询中获取它们的值。

<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 是一个列名,它可能从我需要在其 td 中显示的 qryGetData 返回值 100

target_monthMinus17 是一个列名,它可能从 qryGetData 返回值 95,我需要在其 td 中显示

target_monthPlus17 是一个列名,它可能从 qryGetData 返回值 205,我需要在其 td 中显示

依此类推……如您所知,我们总是回到过去的 18 个月和未来的 18 个月。

我发现了几个与此类似的问题并已应用于我的代码,但不知何故他们试图做不同的事情,或者我仍然不明白我做错了什么。

在此先感谢您的帮助 :)

个人电脑

4

1 回答 1

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(所有列的列表)。你也可以创造性地使用它。

于 2016-10-18T17:36:13.917 回答