I have query data that should be inserted in the structure. While looping over data each value should be assigned to matching column. Here is example of query data:
REC_ID NAME STATUS TYPE YEAR
1 01 PARIS Approved 1 2019
2 06 AUSTIN Inactive 3 2017
3 48 LONDON Approved 2 2018
4 43 ROME Inactive 5 2019
5 61 DUBLIN Inactive 4 2019
This data should be organized to look like this:
1
REC_ID 01
NAME PARIS
STATUS Approved
TYPE 1
YEAR 2019
2
REC_ID 06
NAME AUSTIN
STATUS Inactive
TYPE 3
YEAR 2017
3
REC_ID 48
NAME LONDON
STATUS Approved
TYPE 2
YEAR 2018
4
REC_ID 43
NAME ROME
STATUS Inactive
TYPE 5
YEAR 2019
5
REC_ID 61
NAME DUBLIN
STATUS Inactive
TYPE 4
YEAR 2019
I tried to get desired data format with this function:
function formatData(qryData) {
local.fnResult = structNew();
local.fnData = structNew();
if(qryData.recordcount){
for(row in qryData) {
for(column in qryData.columnList) {
local.strRec = structNew();
structInsert(strRec, column, row[column]);
local.fnData[qryData.currentrow] = strRec;
}
}
}
writeDump(fnData);
}
Here is how my result looks:
1
REC_ID 01
2
REC_ID 06
3
REC_ID 48
4
REC_ID 43
5
REC_ID 61
I use ColdFusion 11 cfscript syntax. If anyone can help me solve this problem please let me know. Thank you.
There is an issue with your column list loop, you are creating a new structure for each column and that get reset in the next loop.
This loop should be changed
for(column in qryData.columnList) {
local.strRec = structNew();
structInsert(strRec, column, row[column]);
local.fnData[qryData.currentrow] = strRec;
}
to look like
local.strRec = structNew();
for(column in qryData.columnList) {
structInsert(strRec, column, row[column]);
}
local.fnData[qryData.currentrow] = strRec;