The code used by the grid to generate the DAL query is 
at https://github.com/web2py/web2py/blob/master/gluon/sqlhtml.py#L2351. 
Notice you can do:

SQLFORM.grid (..., cache_count=my_custom_count_function)

where my_custom_count_function takes the DAL Set object used by the grid to 
generate the query for the grid as well as request.vars and returns the 
count. So, you can work around whatever the grid/DAL are doing by writing 
custom code to figure out the count.

To see how the DAL generates SQL for Oracle, look 
at https://github.com/web2py/pydal/blob/master/pydal/dialects/oracle.py for 
Oracle specific syntax as well 
as https://github.com/web2py/pydal/blob/master/pydal/dialects/base.py#L35 
for the common dialect from which Oracle inherits.

Finally, after an HTTP request, you can inspect db._timings for a list of 
all DAL queries made during the request (and the time they took to execute) 
in order to see the exact SQL generated by the grid to determine the count 
(db._timings is included in response.toolbar(), which you can temporarily 
include in your grid view via {{=response.toolbar()}}).

Anthony

On Monday, November 19, 2018 at 8:04:42 AM UTC-5, Thomas Klopf wrote:
>
> Hi everyone,
>   Please could someone point out how/where the pagination works with 
> SQLFORM.grid?   I found a bug with the Oracle driver, where queries will 
> fail if you're trying to filter columns that aren't displayed in the 
> 'fields' list passed to SQLFORM.grid().  Basically I need to get to the 
> code that generates the 'select count(*)' SQL for finding how to limit the 
> query for paging.  Oracle is complaining with 'ora-00904 invalid 
> identifier' with columns that aren't given in the fields argument, when 
> pagination is needed. 
>
>   Anyway I'm doing my best to reverse-engineer the DAL code but I'm lost 
> now.. 
>
> Thanks!
> -Tom
>
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to