mamekun
4/18/2013 - 5:11 AM

queryオブジェクトを変換します。

queryオブジェクトを変換します。

<cffunction name="queryToCsvText" access="remote" returnType="string" output="false" hint="クエリ結果をCSV形式の文字列に変換し返却する。">
  <cfargument name="query" type="query" required="true" />
  <cfargument name="includeColHeader" type="boolean" default="true" />

	<cfset var local = {} />
	<cfset local.retStr = "" />

	<cfset local.colList = arrayToList( arguments.query.getColumnNames() ) />

	<cfif arguments.includeColHeader >
		<cfset local.retStr &=  local.colList & chr(13) & chr(10) />
	</cfif>

	<cfloop query="arguments.query">
		<cfset local.tempLine = "" />
		<cfloop list="#local.colList#" index="colName">
			<cfset local.tempLine = listAppend( local.tempLine, evaluate( colName ) ) />
		</cfloop>
		<cfset local.retStr &=  local.tempLine & chr(13) & chr(10) />
	</cfloop>

	<cfreturn local.retStr />
</cffunction>
<cffunction name="queryToArray" access="remote" returnType="array" output="false" hint="クエリ結果を配列に変換し返却する。">
  <cfargument name="q" type="query" required="true" />
	<cfargument name="includeColHeader" type="boolean" default="true" />

	<cfset var local = {} />
	<cfset local.aryRet = [] /> <!--- サイズ決めてからでもいいけど。 --->
	<cfset local.aryTmp = [] />

	<cfset local.colList = arrayToList( arguments.q.getColumnNames() ) />
	<cfif arguments.includeColHeader >
		<cfset arrayAppend( local.aryRet, listToArray( local.colList ) ) />
	</cfif>

	<cfloop query="arguments.q">

		<cfloop list="#local.colList#" index="colName">
			<cfset arrayAppend( local.aryTmp, arguments.q[ colName ] ) />
		</cfloop>
		<cfset arrayAppend( local.aryRet, local.aryTmp ) />
		<cfset local.aryTmp = [] />
	</cfloop>

	<cfreturn local.aryRet />
</cffunction>