不确定这是否可行。我想要做的是通过查询构建输出字符串。我连接输出“名称”并将“值”附加到结尾。然后输出字符串。我不认为这是可能的。但我正在寻找任何替代方案。
所以这就是我所拥有的:
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
答案 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>