On more than one occasion, I've been caught out by a slip in my select
statements. If you use 'and' rather than '&' to combine criteria for a
select you get different results. In the first case, (and) the code
returns a single record, regardless of the values of the critieria
used for the selection. In the second case (&) I get the correct
record depending on the value of termkey.

# this doesn't work
#
glossary=db((db.glossaryterms.termkey==termkey) and
(db.glossaryterms.org_id==session.org_id)).select()
#
# this does work
glossary=db((db.glossaryterms.termkey==termkey) &
(db.glossaryterms.org_id==session.org_id)).select()

My question is: should using 'and' work at all or is it precluded as a
keyword in queries? As it is I've lost hours trying to figure out the
problem.

If 'and' should work - there's a bug in DAL I think.
If 'and' should not work, then it would be really helpful if the DAL
rejected with a runtime failure message so it doesn't waste a lot of
time.

Reply via email to