I'd go for checking for howmanyrecord = -1 and in your controller
if howmanyrecord == '-1':
limitby = False
else:
limitby = (int(startrecord), int(howmanyrecord ))
return db(yourquery).select(limitby=limitby)
On Thursday, October 11, 2012 6:13:55 PM UTC+2, Richard wrote:
>
> Hello,
>
> I have component tools, they serve to show table build from a query with
> redirect link. I place them in differents places in my app and depending of
> the place I would like to be able to pass max number of rows to the
> underling query used to build the table showed in the component. So I could
> do :
>
> {{=LOAD(c='dashboard_tools', f='tool1', *vars=dict(minrows=0, maxrows=10)*,
> extension='load', ajax=True)}}
>
> But if I would like to have all the records... What is the proper way??
>
> My first thought was to pass maxrows=0 or -1 than query should return all
> the records. But limitby it is not working like that.
>
> Then I realize that passing only one parameter to the limitby (limitby=0)
> would lead to what I want.
>
> Since
>
> db(db.table.id>0).select(db.table.ALL, limitby=(0))
>
> Return all the records
>
> So I could just do that :
>
> {{=LOAD(c='dashboard_tools', f='tool1', *vars=dict(limitby=0)*,
> extension='load', ajax=True)}}
>
> or
>
> {{=LOAD(c='dashboard_tools', f='tool1', *vars=dict(limitby=(0,10))*,
> extension='load', ajax=True)}}
>
> But the later seems not working because request.vars.limitby is a string...
>
> This can easily be managed like this
>
> {{=LOAD(c='dashboard_tools', f='tool1', *vars=dict(limitby='(0,10)')*,
> extension='load', ajax=True)}}
>
> eval(request.vars.limitby)
>
> *But I am concerned about the security, should I??*
>
> Other solution could be to stick with minrows, maxrows and :
>
> if minrows or maxrows:
> limitby=(int(request.vars.minrows),int(request.vars.maxrows)
> else:
> limitby=int(request.vars.minrows)
>
> Maybe the book should contain little more explanation about the use of
> limitby in context of URL and vars ?
>
> Thank you.
>
> Richard
>
--