Coldfusion动态查询输出

时间:2013-01-18 09:39:34

标签: dynamic coldfusion concatenation cfoutput

不确定这是否可行。我想要做的是通过查询构建输出字符串。我连接输出“名称”并将“值”附加到结尾。然后输出字符串。我不认为这是可能的。但我正在寻找任何替代方案。

所以这就是我所拥有的:

qry1是主要查询。 qry2获取要追加到字符串末尾的值。 因此变量test的值如下所示:"variables.qry1.100"

这对qry1有意义,因为这是查询对象的一部分。那么这个字符串将从数据库返回一个正确的值,因为有一个名为100

的子查询
<cfoutput>
<cfloop query="variables.qry2">
    <cfset test = variables.qry1. & variables.qry2.#valueID#>
<td>#test#</td> 
</cfloop>
</cfoutput>

非常感谢。

JC

2 个答案:

答案 0 :(得分:4)

您尝试做的是可能的,但您需要首先构建变量名称。

而不是

<cfset test = variables.qry1. & variables.qry2.#valueID#>

尝试

<cfset test = "variables.qry1.#variables.qry2.valueID#">

测试将是variables.qry1.[valueID value]。请注意,[valueID值]是从查询返回的内容,因此变量中的实际值。

然后显示variables.qry1.[valueID value]的值。

#evaluate(test)#

更新正如Adam Cameron所说的那样。你应该真的试图避免使用evaluate()函数,它会受到性能的影响并且不被视为良好的做法。而是使用以下代码(这是从Adam Cameron的答案中复制而来)

#variables.qry1[variables.qry2.valueID][1]#

注意:请查看Adam Cameron的答案,以便更好地描述最新情况。

答案 1 :(得分:0)

亚当有正确的解决方案。以下是原始代码的修改版本,可以执行我认为您要执行的操作。

<cfoutput query="variables.qry1">
<tr>
<cfloop query="variables.qry2">
    <cfset test = variables.qry1[variables.qry2.valueID][variables.qry1.currentrow]>
    <td>#test#</td> 
</cfloop>
</tr>
</cfoutput>