首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Q-of-Q不尊重列顺序

Q-of-Q不尊重列顺序
EN

Stack Overflow用户
提问于 2017-05-11 15:39:32
回答 2查看 219关注 0票数 1

我正在使用CFSPREADSHEET将XLS文件读取到查询中。然后根据需要重新排序列。但是,我所使用的查询查询保留了字母顺序。

XLS文件的字段顺序是正确的,但是当转换为查询时,字段将按字母顺序排列。

我使用这个漂亮的UDF将结果输出到CSV,并且这些字段仍然是字母化的,以证明q-of-q没有遵守我的请求。

为了纠正这个问题,我试图使用q-of-q来按正确的顺序重新格式化列。

代码语言:javascript
复制
<cfspreadsheet action="read" src="#local.tmpPath##local.tmpFile#" excludeheaderrow="true" headerrow="1" sheet="1" query="local.qTemp" />

<!--- Change column order around as necessary --->
<cfquery name="local.qTemp" dbtype="query">
    SELECT
            Name, Address, City
    FROM
            [local].qTemp
</cfquery>

<cfset local.newCSV = QueryToCSV(
    query = local.qTemp,
    fields = local.qTemp.columnlist,
    createHeaderRow = true,
    delimiter = '|'
) />

<cffile action="write" charset="windows-1252" file="#local.tmpPath#foo.csv" output="#replace(local.newCSV, """", "", "ALL")#" nameconflict="overwrite" />

输出时的列顺序是:

  • Address,City,Name

而不是查询顺序:

  • Name,Address,City

我读到了关于这个话题的帖子,但是它并没有具体地解决我的问题(除非我读错了)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-16 16:02:25

(来自评论)

实际上,QoQ与问题无关。原始查询也会出现同样的问题。不幸的是,query.columnList总是按字母顺序列出列。这是许多CF dev的长期抱怨。要获得“真正的”顺序,您必须使用不同的技术,如:

  • 无文档的query.getColumnNames()方法(OR)
  • GetMetaData(查询)结果构建您自己的列表 列= [];getMetaData(Qry).each(函数(elem,index){ arrayAppend(列,elem.name);};writeDump(列),label=“实列顺序”);
票数 4
EN

Stack Overflow用户

发布于 2017-05-12 19:59:54

您可以使用

代码语言:javascript
复制
<cfspreadsheet action="write" query="yourqueryname" filename="yourfilename">

它将输出带有查询select语句列顺序的电子表格。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43919994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档