如何循环查询数据并插入结构?
How to loop over query data and insert in structure?
我有应该插入到结构中的查询数据。在循环数据时,每个值都应分配给匹配的列。这是查询数据的示例:
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
此数据应按如下所示组织:
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
我尝试使用此函数获取所需的数据格式:
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);
}
这是我的结果:
1
REC_ID 01
2
REC_ID 06
3
REC_ID 48
4
REC_ID 43
5
REC_ID 61
我使用 ColdFusion 11 cfscript 语法。如果有人可以帮助我解决这个问题,请告诉我。谢谢。
您的列列表循环存在问题,您正在为每一列创建一个新结构,并在下一个循环中重置。
这个循环应该改变
for(column in qryData.columnList) {
local.strRec = structNew();
structInsert(strRec, column, row[column]);
local.fnData[qryData.currentrow] = strRec;
}
看起来像
local.strRec = structNew();
for(column in qryData.columnList) {
structInsert(strRec, column, row[column]);
}
local.fnData[qryData.currentrow] = strRec;
@espresso_coffee,我已经解决了你的问题。我希望您需要创建一个以键为行数的结构,并且每个键值都应采用结构格式。在这里,我为我的查询提供了一些示例代码。希望对你有用。
<cfquery name="readStudent" datasource="student">
select * from user
</cfquery>
在我的用户 table 中有 6 条记录,包括名字、姓氏和 ID。在这里,我循环查询并将其转换为结构键值。我使用脚本语法是因为您的代码具有脚本样式。 :)
<cfscript>
myStr = {};
for (row in readStudent) {
structInsert(myStr, #readStudent.currentrow#, row);
}
writeDump(myStr);
</cfscript>
在这里,我将我的第一个结构名称创建为 myStr,并循环查询数据并为当前行的键插入一个结构值,即 readStudent.currentRow 和值在 row 中。具有名字、姓氏和 ID 作为结构键及其值的行。
FYR : 我附上了示例查询并转换为结构值。如果我理解错了请纠正我
希望对您有所帮助。谢谢。
如果我理解正确的话,看起来你可以
array function formatData(qryData) {
return DeserializeJSON(SerializeJSON(arguments.qryData, "struct"));
}
结果:
备选
array function formatData(qryData) {
var result = [];
for (var row in qryData) {
result.append(row);
}
return result;
}
我有应该插入到结构中的查询数据。在循环数据时,每个值都应分配给匹配的列。这是查询数据的示例:
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
此数据应按如下所示组织:
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
我尝试使用此函数获取所需的数据格式:
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);
}
这是我的结果:
1
REC_ID 01
2
REC_ID 06
3
REC_ID 48
4
REC_ID 43
5
REC_ID 61
我使用 ColdFusion 11 cfscript 语法。如果有人可以帮助我解决这个问题,请告诉我。谢谢。
您的列列表循环存在问题,您正在为每一列创建一个新结构,并在下一个循环中重置。
这个循环应该改变
for(column in qryData.columnList) {
local.strRec = structNew();
structInsert(strRec, column, row[column]);
local.fnData[qryData.currentrow] = strRec;
}
看起来像
local.strRec = structNew();
for(column in qryData.columnList) {
structInsert(strRec, column, row[column]);
}
local.fnData[qryData.currentrow] = strRec;
@espresso_coffee,我已经解决了你的问题。我希望您需要创建一个以键为行数的结构,并且每个键值都应采用结构格式。在这里,我为我的查询提供了一些示例代码。希望对你有用。
<cfquery name="readStudent" datasource="student">
select * from user
</cfquery>
在我的用户 table 中有 6 条记录,包括名字、姓氏和 ID。在这里,我循环查询并将其转换为结构键值。我使用脚本语法是因为您的代码具有脚本样式。 :)
<cfscript>
myStr = {};
for (row in readStudent) {
structInsert(myStr, #readStudent.currentrow#, row);
}
writeDump(myStr);
</cfscript>
在这里,我将我的第一个结构名称创建为 myStr,并循环查询数据并为当前行的键插入一个结构值,即 readStudent.currentRow 和值在 row 中。具有名字、姓氏和 ID 作为结构键及其值的行。
FYR : 我附上了示例查询并转换为结构值。如果我理解错了请纠正我
希望对您有所帮助。谢谢。
如果我理解正确的话,看起来你可以
array function formatData(qryData) {
return DeserializeJSON(SerializeJSON(arguments.qryData, "struct"));
}
结果:
备选
array function formatData(qryData) {
var result = [];
for (var row in qryData) {
result.append(row);
}
return result;
}