I wrote a little CFM file to generate actionscript classes for value objects from coldfusion queries. It uses getMetaData() on the query to determine data types for the VO. I've only coded in some simple datatypes in the getColType() method to handle the conversion from the dbtype to actionscript data type - you can add whatever you need.
<cfsetting enablecfoutputonly="yes">
<cfset voName = "EntityLogVO">
<cfset voPackage = "model.vo">
<cfset remoteClass = "cfcs.enquire.vo.#voName#">
<cfquery name="qry" datasource="ENQUIRE" maxrows="1">
select
A.QUERYID, A.USERID, A.QUERYDATE, A.INSTANCE,
A.TITLE, A.SAVED, A.LASTRUNDATE,
A.CRITERIA
from dbo.DROP_QUERIES A
where
A.USERID=<cfqueryparam cfsqltype="cf_sql_char" value="ADSRJR">
AND A.SAVED=<cfqueryparam cfsqltype="cf_sql_smallint" value="1">
order by
A.QUERYDATE desc
</cfquery>
<cffunction name="getColType" output="false" returnType="string">
<cfargument type="string" name="coltypename" required="yes">
<cfset coltypename = listfirst(coltypename, " ")>
<cfif coltypename contains "char">
<cfreturn "String">
<cfelseif coltypename contains "int">
<cfreturn "int">
<cfelseif coltypename contains "date">
<cfreturn "Date">
<cfelseif coltypename contains "text">
<cfreturn "String">
<cfelseif coltypename contains "float">
<cfreturn "Number">
<cfelseif coltypename contains "double">
<cfreturn "Number">
<cfelse>
<cfthrow message="Unhandled Database Type" detail="the database type #coltypename# is not handled.">
</cfif>
</cffunction>
<cfoutput><pre>
/////////////////////////////////////////////////////
// #voName#.as
//
// generated by voGenerator.cfm (Rick Root)
// generated on #dateFormat(Now(),'yyyy-mm-dd')# at #TimeFormat(Now(),'h:mm tt')#
//
//
/////////////////////////////////////////////////////
package #voPackage#
{
[RemoteClass(alias="#remoteClass#")]
public class #voName#
{
</cfoutput>
<cfset metadata = getMetaData(qry)>
<cfloop from="1" to="#ArrayLen(metadata)#" step="1" index="x">
<cfoutput> private var _#metadata[x].Name#: #getColType(metadata[x].TypeName)#;#chr(10)#</cfoutput>
</cfloop>
<cfloop from="1" to="#ArrayLen(metadata)#" step="1" index="x">
<cfoutput>
public function get #metadata[x].Name#(): #getColType(metadata[x].TypeName)#
{
return _#metadata[x].Name#;
}
public function set #metadata[x].Name#(value:#getColType(metadata[x].TypeName)#): void
{
_#metadata[x].Name# = value;
}
</cfoutput>
</cfloop>
<cfoutput>
public function #voName#()
{
}
}
}
</pre>
</cfoutput>
Here is an example of the value object generated from the code above:
/////////////////////////////////////////////////////
// EntityLogVO.as
//
// generated by voGenerator.cfm (Rick Root)
// generated on 2008-03-07 at 12:40 PM
//
//
/////////////////////////////////////////////////////
package model.vo
{
[RemoteClass(alias="cfcs.enquire.vo.EntityLogVO")]
public class EntityLogVO
{
private var _QUERYID: int;
private var _USERID: String;
private var _QUERYDATE: Date;
private var _INSTANCE: String;
private var _TITLE: String;
private var _SAVED: int;
private var _LASTRUNDATE: Date;
private var _CRITERIA: String;
public function get QUERYID(): int
{
return _QUERYID;
}
public function set QUERYID(value:int): void
{
_QUERYID = value;
}
public function get USERID(): String
{
return _USERID;
}
public function set USERID(value:String): void
{
_USERID = value;
}
public function get QUERYDATE(): Date
{
return _QUERYDATE;
}
public function set QUERYDATE(value:Date): void
{
_QUERYDATE = value;
}
public function get INSTANCE(): String
{
return _INSTANCE;
}
public function set INSTANCE(value:String): void
{
_INSTANCE = value;
}
public function get TITLE(): String
{
return _TITLE;
}
public function set TITLE(value:String): void
{
_TITLE = value;
}
public function get SAVED(): int
{
return _SAVED;
}
public function set SAVED(value:int): void
{
_SAVED = value;
}
public function get LASTRUNDATE(): Date
{
return _LASTRUNDATE;
}
public function set LASTRUNDATE(value:Date): void
{
_LASTRUNDATE = value;
}
public function get CRITERIA(): String
{
return _CRITERIA;
}
public function set CRITERIA(value:String): void
{
_CRITERIA = value;
}
public function EntityLogVO()
{
}
}
}