Convert .Net DataSet to Query
<cffunction name="datasetToQuery" access="public" returntype="query" output="false">
<cfargument type="any" name="dataset" required="true">
<cfargument type="string" name="tablename" required="true">
<!--- dataset has 2 nodes: 1) Column definitions 2) Data --->
<cfset var qryResult = "">
<cfset var lstColumns = "">
<cfset var lstTypes = "">
<cfset var aryDataset = ARGUMENTS.dataset.get_any()>
<cfset var aryColumns = XmlSearch(aryDataset[1].getAsString(), "/xs:schema/xs:element[@name='#ARGUMENTS.tablename#']/xs:complexType/xs:sequence/xs:element")>
<cfset var aryData = XmlSearch(aryDataset[2].getAsString(), "/diffgr:diffgram/NewDataSet/#ARGUMENTS.tablename#")>
<cfset var i = 0>
<cfset var c = 0>
<!--- get columns --->
<cfloop from="1" to="#arrayLen(aryColumns)#" index="i">
<cfset lstColumns = listAppend(lstColumns, aryColumns[i].xmlAttributes.name)>
<cfswitch expression="#aryColumns[i].xmlAttributes.type#">
<cfcase value="xs:double,xs:long">
<cfset lstTypes = listAppend(lstTypes, 'double')>
</cfcase>
<cfcase value="xs:date">
<cfset lstTypes = listAppend(lstTypes, 'timestamp')>
</cfcase>
<cfdefaultcase>
<cfset lstTypes = listAppend(lstTypes, 'varchar')>
</cfdefaultcase>
</cfswitch>
</cfloop>
<!--- create query object --->
<cfset qryResult = queryNew(lstColumns, lstTypes)>
<!--- populate query --->
<cfloop from="1" to="#arrayLen(aryData)#" index="i">
<cfset queryAddRow(qryResult)>
<cfloop from="1" to="#arrayLen(aryData[i].xmlChildren)#" index="c">
<cfset querySetCell(qryResult, aryData[i].xmlChildren[c].xmlName, aryData[i].xmlChildren[c].xmlText)>
</cfloop>
</cfloop>
<cfreturn qryResult>
</cffunction>