Coldfusion查询断列结构

时间:2016-06-22 15:41:17

标签: coldfusion cfml cfquery

根据我对过去经验的了解,可以像参考2D数组一样引用coldfusion查询列。有时虽然我遇到了这个问题。

  1. 从电子表格创建查询
  2. 将列名称放入数组
  3. 在尝试访问行时只获取第一个元素
  4. 必须使用解决方法
  5. File#renameTo()

    output of the writeDump

    我只剩下第一列中的第一个元素。我当然得到了:

    Files.move(oldName.toPath(), newName.toPath(), StandardCopyOption.REPLACE_EXISTING);
    

    尝试这样做时:

    //imports is a query object after this function
    var imports = convertSpreadsheetWOHeaders(spreadsheet, 1);
    //this is used to give name values in the json struct, not to access the query columns
    var jsonHeaders = ListToArray("number,constructiontype,description,site_address,parcel,permit_date,note_Applicant,note_Contractor,valuation,note_Bld_Fees,note_Other_Fees");
    //this gives me ["col_1","col_2","col_3",,,etc]. used to access query columns
    var columnHeaders = imports.getColumnNames();
    writeDump(imports[columnHeaders[1]]);
    writeDump(imports);
    

    然而,这有效:

    //imports is a query object after this function
    var imports = convertSpreadsheetWOHeaders(spreadsheet, 1);
    //this is used to give name values in the json struct, not to access the query columns
    var jsonHeaders = ListToArray("number,constructiontype,description,site_address,parcel,permit_date,note_Applicant,note_Contractor,valuation,note_Bld_Fees,note_Other_Fees");
    //this gives me ["col_1","col_2","col_3",,,etc]. used to access query columns
    var columnHeaders = imports.getColumnNames();
    writeDump(imports[columnHeaders[1]]);
    writeDump(imports);
    

    converted to list then array

    我首先转储导入[" col_1"] ,我只获得第一个元素。 然后我像你在上面的图片中看到的那样转储 ListToArray(ArrayToList(导入[" col_1"])),它给了我整列。

    为什么我不能在第一时间正确访问列?

1 个答案:

答案 0 :(得分:3)

真正的问题:

我最初尝试将jsonHeaders列表作为数组访问而不对其进行ListToArray()。之后,我的功能发挥了作用。

<强> BUT。下一部分很有帮助。

尝试访问查询对象时,queryObject["columnName"]被视为queryObject["columnName"][1]的快捷方式,因此coldfusion只会为您提供第一个元素。

但是当我说ListToArray(ArrayToList())时,coldfusion看到ArrayToList必须接受一个数组,因此会产生异常并且该列将作为数组返回。

要将列作为数组运行,可以执行一些操作

ListToArray(ArrayToList(query["column"]));
ListToArray(valueList(query.column));
valueArray(query, "column");