我对cfscript不熟悉,曾经用过标签,所以不知道如何输出数据库查询。
通常情况下
<cfoutput query="qName">
#field1#<br>
#field2#<br><br>
</cfoutput>
我如何在cfscript中做到这一点?
按照下面的评论更新了,并使用了标签,但现在正试图找到一种方法,将每个查询行分割到新的行上。
<cfset dataSet = "">
<cfoutput query="Bookings">
<cfset dataSet = dataSet & ',' & '#str_BookingRef#'>
<cfset dataSet = dataSet & ',' & '#str_GuestName#'>
<cfset dataSet = dataSet & ',' & '#str_CottageName#'>
<cfset dataSet = dataSet & ',' & '#str_AgentName#'>
<cfset dataSet = dataSet & ',' & '#dtm_StartDate#'>
<cfset dataSet = dataSet & ',' & '#dtm_EndDate#'>
<cfset dataSet = dataSet & ',' & '#int_Income#'>
<cfset dataSet = dataSet & ',' & '#int_AgentFee#'>
<cfset dataSet = dataSet & ',' & '#int_VatAmount#'>
<cfset dataSet = dataSet & ',' & '#int_ToOwner#'>
<cfset dataSet = dataSet & ',' & '#int_Adults#'>
<cfset dataSet = dataSet & ',' & '#int_Children#'>
<cfset dataSet = dataSet & ',' & '#int_Pets#' & 'evaluate(Chr(13))'>
</cfoutput>
<cfdump var="#dataSet#">
<cfscript>
data = QueryNew("str_BookingRef, str_GuestName, str_CottageName, str_AgentName, dtm_StartDate, dtm_EndDate, int_Income, int_AgentFee, int_VatAmount, int_ToOwner, int_Adults, int_Children, int_Pets", "VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar,VarChar", [#dataSet#]);
spreadsheet = New spreadsheetLibrary.Spreadsheet();
workbook = spreadsheet.workbookFromQuery( data );
path = "C:\Inetpub\vhosts\pathtofile\#session.int_OwnerID#.xls";
spreadsheet.write( workbook, path, true );
</cfscript>
你不想构建一个字符串,希望它是JSON作为中间步骤。
你想要的是
spreadsheet = spreadsheetNew();
spreadsheet.addRows( Bookings );
有可能 Bookings
的列的顺序不对。在这种情况下,使用query的query进行查询,以正确的顺序进行查询。
或
如果你真的想逐行建立结果。
spreadsheet = spreadsheetNew();
for (row in Bookings) {
spreadsheet.addRow("#str_BookingRef#,
#str_GuestName#,
#str_CottageName#,
#str_AgentName#,
#dtm_StartDate#,
#dtm_EndDate#,
#int_Income#,
#int_AgentFee#,
#int_VatAmount#,
#int_ToOwner#,
#int_Adults#,
#int_Children#,
#int_Pets#");
}
注意:数据会被分隔到新的行,但如果你要这样做,就必须把所有的数据都放在同一行。
这样的做法可以达到你的目的。
for (RowNumber = 1; RowNumber <= qName.RecordCount; RowNumber++) {
writeoutput(qName[field1][RowNumber] & '<br>')
etc
}
但就个人而言,我会坚持使用标签。