> the next question. > i got a result from a database with some records predefined (fields are > id (serial) and name (string)): > > hResult = hConnection.Exec("select * from test") > > in a for loop i go through all the records by doing: > > FOR iCount = 0 TO hResult.Count - 1 STEP 1 > hResult.MoveTo(iCount) > FOR EACH hField IN hResult.Fields > TextArea1.Insert(hResult[hField.Name]) > NEXT > TextArea1.Insert("\n") > NEXT > > which works also fine but i really don't like the hResult.MoveTo() part > of this code, isn't there any way to handle this result simply as an > array? this would solve both problems and i could do database stuff with > ease? > > regards, tobi >
Why just not an array? Ha! Good question... When I design Gambas, I try to use a property only when the process behind is usually immediate (like reading a value in memory). Database drivers are not obliged to return the entire result of a SQL query. They can return the records one by one, at client request. So accessing the i- th record of a Result object can take time. But at the moment only the mysql driver is clever enough for doing that. Moreover, The other reason I didn't use the array interface is a bad one: I stupidly copied the MS interface! :-) And the Result object internally stores its data in a memory array So I could provide the same interface to the Gambas user, and finally you are mainly right. But I don't think I can change the interface anymore, it will break a lot of code. Unless someone finds an unexpected solution. For only you, there is a "syntactic sugar" solution. Create a class named MyResult that way: ' Class MyResult Private $hResult As Result Static Public _call(hResult As Result) As MyResult Dim hMyResult As MyResult = New MyResult(hResult) Return hMyResult End Public Sub _new(hResult As Result) $hResult = hResult End Public Sub _get(Index As Integer) As Result $hResult.MoveTo(Index) return $hResult End Then use it that way: Dim hMyResult As MyResult hMyResult = MyResult(DB.Exec("SELECT * FROM ...")) Print hMyResult[0][Field] Print hMyResult[1][Field] ... Regards, -- Benoît Minisini ------------------------------------------------------------------------------ Start uncovering the many advantages of virtual appliances and start using them to simplify application deployment and accelerate your shift to cloud computing http://p.sf.net/sfu/novell-sfdev2dev _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user