【问题标题】:coldfusion query loop not cooperating冷融合查询循环不合作
【发布时间】:2011-11-09 18:07:22
【问题描述】:

我正在尝试创建一个函数来从查询中创建 csv 文件。运行查询后,我将遍历它并将每一行的字段附加到一个 StringBuffer 对象。为此,我将列名放入一个数组中:

<cfset indexes = #ListToArray(Arguments.header)# />

其中参数当前是一个字符串,例如:

"col1, col2, col3...."

我已经通过转储验证了查询和数组都应该是什么。 循环遍历查询结果时会出现问题。给定:

<cfset indexes_length = #ArrayLen(indexes)# />
<cfloop query="query_for_csv">
        <cfloop index="i" from="1" to="#indexes_length#">
            <cfset attr = #indexes[i]# />
            <cfset sbOutput.Append(
                "#query_for_csv[attr][query_for_csv.CurrentRow]#") />
        </cfloop>           
    </cfloop> 

只有第一行的第一个值在我得到错误信息之前被输出:

[Table (rows 10 columns col1, col2, col3):
[col1: coldfusion.sql.QueryColumn@6f731eba]
[col2: coldfusion.sql.QueryColumn@6ee67e7f] 
[col3: coldfusion.sql.QueryColumn@5c6647cb] 
is not indexable by col2 

如果我用文字“col2”替换变量#attr#:

#query_for_csv['col2'][query_for_csv.CurrentRow]#

然后循环顺利通过,并吐出由“col2”索引的所有值。有什么想法吗?

【问题讨论】:

  • 如果你在搜索引擎中搜索QueryToCsv,你会发现现有的函数完全符合你的要求,只是它们已经编写好了并且很可能也已经过错误测试。
  • CFLib.org 是 Peter 评论的绝佳资源。您还可以使用 cfgloss.com 搜索 ColdFusion 文档和 CFlib.org 内容。
  • 是的,我发现下面提到的 Ben Nadel 的解决方案经过一些修改后效果很好。仍然必须弄清楚如何允许用户选择将文件保存到的位置。另一个问题!

标签: coldfusion cfloop


【解决方案1】:

我猜你的标题列表中的空格是问题所在,所以这可能会起作用:

<cfset attr = trim(indexes[i]) />


但是,由于您没有使用它们,因此您可能不需要它并且可以这样做......

<cfloop query="QueryName">
    <cfloop index="CurCol" list=#QueryName.ColumnList# >
        <cfset sbOutput.Append(
            QueryName[CurCol][QueryName.CurrentRow]
        )/>
    </cfloop>
</cfloop>


附言
您会注意到这里只有一对哈希 - 在您的原始代码 sn-ps 中也只需要一对(在 to 属性中) - 其余的都是不必要的噪音。

【讨论】:

  • 好吧,我会被诅咒的 - 做到了。您使用 ColumnList 属性的提示使我也不必传递标头参数。谢谢!
【解决方案2】:

如前所述,尽量避免在列表元素之前或之后使用空格。

如果您想比较笔记,请查看 Ben Nadel 选择实现此类 Query2CSV 转换器的方法:http://www.bennadel.com/blog/1239-Updated-Converting-A-ColdFusion-Query-To-CSV-Using-QueryToCSV-.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多