我有一个应用程序,它接受一些数据库信息并将其推送到数据网格或图表。
我遇到过这样一个错误:只有一行并试图在数组中使用它,所以我可以在我的应用程序中使用它。它引起了我的注意,它是人们面临的一个非常普遍的问题,但无论尝试什么,我似乎无法绕过它。
我的actionscript有一个通过ASP向数据库转发的函数,并在事件中返回数据 - 如下所示(obv我已经删除了一些东西 - 对mssqlQuery函数进行了调用 - 只有一个我有下面的创伤)
mssqlQuery("SELECT (CASE SLARag ,COUNT (SLARag) as Volume FROM [CMI_ClientMI].[Portal].[BatchUpdate]","BusSegBuildSummary");}
public static function mssqlQuery(sql:String,fid:String):void {
var http:HTTPService = new HTTPService;
var parm:Object = new Object;
parm.fas_sql = sql;
parm.fas_db = mssql_db;
http.url = mssql_url+"?irand="+Math.random();
// http.showBusyCursor = true;
http.request = sql;
http.addEventListener(ResultEvent.RESULT, mssqlResult);
http.addEventListener(FaultEvent.FAULT, mssqlFault);
http.method = "POST";
sqlToken = http.send(parm);
sqlToken.param = fid;
}
//Var for BusSegBuildSummary arraycollection
[Bindable]
public static var _BusSegBuildSummary:ArrayCollection = new ArrayCollection();
//Case statement for BusSegBuildSummary
case "BusSegBuildSummary":
if( event.result.results.record is ObjectProxy ){
trace("this is object Proxy");
}
else{
trace("this isnt object Proxy");
_BusSegBuildSummary = event.result.results.record;
}
break;
所以 - 如果结果中有多条记录 - 那么我们就可以了 - 它是跟踪(“这是对象代理”);有点麻烦。 我认为我必须将对象转换为数组收集,并且我尝试了许多不同的方法但没有成功。
有什么想法吗?我现在已经挣扎了一段时间,我很恐慌!
答案 0 :(得分:1)
if( event.result.results.record is ObjectProxy ){ var obj:ObjectProxy = event.result.results.record as ObjectProxy; _BusSegBuildSummary = new ArrayCollection([obj.object]); }
答案 1 :(得分:0)
这是未经测试的,但我认为它可能有用。只需使用ArrayUtil.toArray()将ObjectProxy转换为ArrayCollection。
// import array utils
import mx.utils.ArrayUtil;
// later on
var record:* = event.result.results.record;
if (record is ArrayCollection) {
_BusSegBuildSummary = record;
} else if (record is ObjectProxy) {
_BusSegBuildSummary = new ArrayCollection(ArrayUtil.toArray(record));
}