jamo

castQueryColumn()

Jun 13th, 2011
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <cfscript>
  2. /*  castQueryColumn
  3.     SunStar Media - converts query column to a different datatype.  Useful when
  4.     importing numeric/date values via CFHTTP or CFSpreadsheet since ColdFusion
  5.     converts all values to VarChar.
  6.     6/13/2011  http://www.ssmedia.com/
  7.     <CFSET GetResults = castQueryColumn(GetResults, thisColumn, "decimal")>  */
  8.  
  9. function castQueryColumn(qry, column, datatype) {
  10.     var columnData = arrayNew(1);
  11.     var ii = "";
  12.     var loop_len = arguments.qry.recordcount;
  13.     var columnNames = arraytoList(arguments.qry.getMetaData().getColumnLabels());
  14.     var qoq = new Query();
  15.     var newQry = new Query();
  16.     var javatype = '';
  17.     datatype = lcase(datatype);
  18.     if (Listfindnocase(columnNames, arguments.column) IS 0) {return arguments.qry;}
  19.     switch(datatype){
  20.         case "integer": {javatype = "int"; break;}
  21.         case "bigint": {javatype = "long"; break;}
  22.         case "decimal": {javatype = "BigDecimal"; break;}
  23.         case "varchar": {javatype = "string"; break;}
  24.         case "binary": {javatype = "byte"; break;}
  25.         case "bit": {javatype = "boolean"; break;}
  26.         default: {javatype = "string"; break;}
  27.     }
  28.     for (ii=1; ii lte loop_len; ii=ii+1) {
  29.         if (isNull(arguments.qry[arguments.column][ii])){
  30.             arrayAppend(columnData, arguments.qry[arguments.column][ii]);
  31.         } else if (listfindnocase("date,time", datatype) AND ISDate(arguments.qry[arguments.column][ii])) {
  32.             arrayAppend(columnData, parsedatetime(arguments.qry[arguments.column][ii]));
  33.         } else if (listfind("int,long,float,BigDecimal,string,byte,boolean", javatype)){
  34.             arrayAppend(columnData, JavaCast(javatype, arguments.qry[arguments.column][ii]));
  35.         } else {
  36.             arrayAppend(columnData, arguments.qry[arguments.column][ii]);
  37.         }
  38.     }
  39.     columnNames = ListDeleteAt(columnNames, Listfindnocase(columnNames, column));
  40.     qoq.setAttributes(QoQsrcTable = arguments.qry);
  41.     newQry = qoq.execute(sql="select #columnNames# from QoQsrcTable", dbtype="query");
  42.     newQry = newQry.getResult();
  43.     QueryAddColumn(newQry, column, datatype, columnData);
  44.     return newQry;
  45. }
  46. </cfscript>
Advertisement
Add Comment
Please, Sign In to add comment