[Gambas-user] How to address more than one table in resultset

Benoit Minisini gambas at ...1...
Thu Jan 29 15:39:52 CET 2009


On jeudi 29 janvier 2009, Ron wrote:
> Bit stuck.
>
> In an attempt to optimize some db queries.
>
> I changed this (gets all events first then check if enabled, then gets
> the trigger fields for that event etc):
> ----
>   DIM rResult, rResultTrig, rResultAction AS Result
>
>   rResult = Main.hDB.Exec("SELECT * FROM events")
>   IF rResult THEN
>     IF rResult.Count THEN
>       FOR EACH rResult
>         IF rResult!enabled THEN
>           IF rResult!trigger1 THEN
>             rResultTrig = Main.hDB.Exec("SELECT * FROM triggers WHERE id
> = &1 ", rResult!trigger1)
>             IF rResultTrig THEN
>               IF rResultTrig!param1 =
> ...
>        NEXT
> ----
>
> to this (gets selected events and triggers table/fields):
> ----
>   DIM rResult AS Result
>
>   rResult = Main.hDB.Exec("SELECT * FROM events, triggers WHERE
> events.trigger1 = triggers.id AND triggers.type = 3 AND events.enabled
> AND triggers.param1 = &1", iId)
>
>   IF rResult THEN
>     IF rResult.Count THEN
>
>       FOR EACH rResult
> ...
>       NEXT
> ----
> In the sql query tool from database manager it returns exactly the
> correct records/fields etc
>
> But how can I get the fields from the triggers table from this resultset?
>
> I cannot do something like  rResult!triggers.id
> Is this possible?
>

The '!' syntactic sugar works only if you use an identifier. Otherwise you 
must use the [] syntax: rResult["triggers.id"].

Regards,

-- 
Benoit Minisini




More information about the User mailing list