2010-11-22 3 views
1

J'ai une application qui prend des informations de base de données et les place dans une grille de données ou un graphique.Objet d'une collection de tableaux

J'ai rencontré cette erreur d'avoir une seule ligne et essayer de l'utiliser dans un tableau afin que je puisse l'utiliser dans mon application. Il est venu à mon attention que c'est un problème assez commun que les gens font face, mais je ne semble pas être capable de le contourner, peu importe ce que j'essaie. Mon actionscript a une fonction qui trotte vers la base de données via ASP, et renvoie les données dans l'événement - comme ci-dessous (obv j'ai supprimé certains trucs - chargement des appels à la fonction mssqlQuery - seulement celui J'ai un traumatisme avec est ci-dessous)

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; 

donc - si le résultat a plus d'un enregistrement en elle - alors nous sommes bien - sa trace (« ceci est objet proxy »); peu qui est gênant. Je pense que je dois lancer l'objet comme une collection de tableaux et j'ai essayé cela de différentes façons sans succès.

Des idées? Je me bats depuis un moment maintenant et je panique!

Répondre

0

Ceci n'a pas été testé, mais je pense que cela pourrait fonctionner. Utilisez simplement ArrayUtil.toArray() pour convertir ObjectProxy en 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)); 
} 
1
  
    if(event.result.results.record is ObjectProxy){ 
     var obj:ObjectProxy = event.result.results.record as ObjectProxy; 
     _BusSegBuildSummary = new ArrayCollection([obj.object]); 
     } 
Questions connexes