Essentially, I don't think you can call nextId(), it has to be a request that dispatches an event when the id comes back from the server.
________________________________ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of PremierNEWS Sent: Sunday, January 27, 2008 4:00 AM To: [email protected] Subject: [flexcoders] How to dispatch an event on 2 levels Hello, i've Database.as class that manages the connection to database and send/retrieve queries and results. It, only, uses SQL classes. For example import flash.events.SQLErrorEvent; import flash.events.SQLEvent; import flash.filesystem.File; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; [Event(name="result",type="mx.rpc.events.ResultEvent")] [Event(name="fault",type="mx.rpc.events.FaultEvent")] public class DatabaseManager extends EventDispatcher { private var instance:DatabaseManager= null; private var dbFile:File; private var dbConn:SQLConnection; public function open(path:String):void { dbFile= new File(File.desktopDirectory.nativePath+"\\"+path <file:///\\> ); dbConn= new SQLConnection(); dbConn.addEventListener(SQLEvent.OPEN, successOpen); dbConn.open(dbFile); } private function successMethod(evt:Event):void { var queryResult:SQLResult= SQLStatement(evt.target).getResult(); var event:ResultEvent= new ResultEvent("result",true,true,queryResult.data); dispatchEvent(event); } private function errorMethod(evt:Event):void { var event:FaultEvent= new FaultEvent("fault",false,true); dispatchEvent(event); } public function execQuery(query:String):void { var dbQuery:SQLStatement= new SQLStatement(); dbQuery.text= query; dbQuery.sqlConnection= this.dbConn; dbQuery.addEventListener(SQLEvent.RESULT,successMethod); dbQuery.addEventListener(SQLErrorEvent.ERROR,errorMethod); dbQuery.execute(); } } } In this way, up-level class uses database need to invoke Database.as's methods. For example private function nextId(table:String):int { var query:String= "SELECT MAX(ID) FROM LISTA;"; var max:int; dbManager.addEventListener(ResultEvent.RESULT, function(evt:ResultEvent):void { max= evt.result as int; }); dbManager.execQuery(query); Alert.show("max "+max); return max+1; } In last method i would in nextId returns the value of the max+1. So it needs run the query, retrieve the value and return to caller the value+1. How i need to manage the events? Thanks.

