options=[str(my_macaddr[i].MacAddr) for i in range(len(my_macaddr))]
 
form=SQLFORM.factory(Field('macs',requires=IS_IN_SET(options,multiple='multiple')))
 
dbset=db4((db4.data_table.ReqTime>='2010-11-08T21:00')&(db4.data_table.ReqTime<='2010-11-08T22:00'))
  if form.accepts(request) and form.vars.macs:
     query = reduce(lambda a,b:a|b,[db4.data_table.MacAddr==x for x in
form.vars.macs])
     dbset=dbset(query)
  records =
dbset.select(db4.data_table.MacAddr,db4.data_table.ReqTime,db4.data_table.Po)



On Nov 12, 10:02 am, Lorin Rivers <lriv...@mosasaur.com> wrote:
> Sorry I wasn't clear.
>
> I'm using a select multiple element in my form. When more than one (in my 
> example, it's a MAC address) item is chosen, I need to return a result set 
> for each choice and display them together.  
>
> I could do it with a query like: "choice 1 OR choice 2" or I could do it  by 
> combining the results of separate queries without the OR (there's also a date 
> range but that's from a separate field and is hard-coded while I figure this 
> other bit out).
>
> I'm having trouble constructing the code to handle the multiple selections. 
> The form returns the request.vars just fine, so that part of my code is 
> working. I think I need to loop through the request.vars in my controller to 
> build my query or queries but I can't figure out how. I tried using a loop 
> from i to len(request.vars) but that didn't work.
>
> On Nov 11, 2010, at 21:01, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > sorry I do not understand the question.
>
> > On Nov 11, 6:12 pm, Lorin Rivers <lriv...@mosasaur.com> wrote:
> >> I have a form using this:
> >>   options=[str(my_macaddr[i].MacAddr) for i in range(len(my_macaddr))]
> >>   
> >> form=FORM(SELECT(*options,_name='MacAddrSelect',_multiple='multiple'),INPUT
> >>   (_type='submit'))
>
> >>   records = db4((db4.data_table.MacAddr==request.vars.MacAddrSelect) & 
> >> (db4.data_table.ReqTime>='2010-11-08T21:00') & 
> >> (db4.data_table.ReqTime<='2010-11-08T22:00')).select(db4.data_table.MacAddr,db4.data_table.ReqTime,db4.data_table.Po)
>
> >> How do I create a loop that will return records using more than one 
> >> selection in my form?
> >> --
> >> Lorin Rivers
> >> Mosasaur: Killer Technical Marketing <http://www.mosasaur.com>
> >> <mailto:lriv...@mosasaur.com>
> >> 512/203.3198 (m)
>
>

Reply via email to