The first 20 records appear in the same order in each case (using 
DBBrowser).  How does that help?

I *am* using the args (in code that appears before this), and do not use 
any links generated by grid.

- Scott

On Monday, December 12, 2016 at 11:22:53 PM UTC-5, Anthony wrote:
>
> Run the following two queries using an external SQLite client (not web2py 
> or the DAL):
>
> SELECT  t_dog.id, t_dog.f_Dog_ID, t_dog.f_Name, t_dog.f_Breed, t_dog.
> f_Verified, t_dog.f_Lookup, t_dog.f_User, t_dog.uuid FROM t_dog WHERE (
> t_dog.id IN (1666,1667,1669,1671,1673,650,1675,652,1677,1678,1680,1688,
> 1682,1411,1684,661,662,664,1689,1690,667,1692,1694,1696,673,1698,1700,1706
> ,683,685,691,692,694,649,698,699,578,651,580,585,587,588,589,1686,1422,598
> ,603,606,607,610,613,615,618,659,634,635,638)) ORDER BY t_dog.f_Dog_ID 
> LIMIT 20 OFFSET 0;
>
> SELECT  t_dog.f_Name, t_dog.f_Breed, t_dog.f_Dog_ID, t_dog.id FROM t_dog 
> WHERE (t_dog.id IN (1666,1667,1669,1671,1673,650,1675,652,1677,1678,1680,
> 1688,1682,1411,1684,661,662,664,1689,1690,667,1692,1694,1696,673,1698,1700
> ,1706,683,685,691,692,694,649,698,699,578,651,580,585,587,588,589,1686,
> 1422,598,603,606,607,610,613,615,618,659,634,635,638)) ORDER BY t_dog.
> f_Dog_ID, t_dog.id LIMIT 20 OFFSET 0;
>
> Do you get exactly the same results in each case? If so, do you get a 
> different top 20 results when you run:
>
> SELECT  t_dog.id, t_dog.f_Dog_ID, t_dog.f_Name, t_dog.f_Breed, t_dog.
> f_Verified, t_dog.f_Lookup, t_dog.f_User, t_dog.uuid FROM t_dog WHERE (
> t_dog.id IN (1666,1667,1669,1671,1673,650,1675,652,1677,1678,1680,1688,
> 1682,1411,1684,661,662,664,1689,1690,667,1692,1694,1696,673,1698,1700,1706
> ,683,685,691,692,694,649,698,699,578,651,580,585,587,588,589,1686,1422,598
> ,603,606,607,610,613,615,618,659,634,635,638)) ORDER BY t_dog.f_Dog_ID;
>
> Also, why do you have args=request.args in your call to the grid? The 
> "args" argument is for args in the URL that you want the grid to preserve 
> (i.e., args that are not related to the grid itself), but you don't appear 
> to be using any request.args elsewhere in your code. In any case, even if 
> you do have some args to preserve, you would not want to include all of 
> request.args, because when a grid link is clicked, that will include the 
> grid's args as well.
>
> Anthony
>
> On Monday, December 12, 2016 at 9:32:45 PM UTC-5, Scott Hunter wrote:
>>
>> This is the code for my grid:
>>
>>         query = (db.t_classlevel.f_Trial==t.id)&(db.t_classlevel.id
>> ==db.t_run.f_Class_Level)&(db.t_run.f_Dog==db.t_dog.id)
>>         fields = [db.t_dog.f_Name,db.t_dog.f_Breed,db.t_dog.f_Dog_ID]
>>         dog_ids = [x.id for x in db(query).select(db.t_dog.id
>> ,distinct=True)]
>>         query = db.t_dog.id.belongs(dog_ids)
>>         # These two loops were added to demonstrate the problem
>>         for d in db(query).select(orderby=db.t_dog.f_Dog_ID):
>>             print d.f_Dog_ID, d.f_Name, d.f_Breed, d.f_User
>>         print"---"
>>         for d in 
>> db(query).select(orderby=db.t_dog.f_Dog_ID,limitby=(0,20)):
>>             print d.f_Dog_ID, d.f_Name, d.f_Breed, d.f_User
>>         headers = 
>> {'t_dog.f_Name':'Name','t_dog.f_Breed':'Breed','t_dog.f_Dog_ID':'UKI ID'}
>>         args = { 'maxtextlength':{'t_dog.f_Breed':30}, 
>> 'orderby':db.t_dog.f_Name, 'editable':False, 'deletable':False}
>>         links = [{'header':'Manage Entry','body':lambda 
>> r:A('Edit',_href=URL(f='entry_details',args=[t.f_UKI_ID,r.f_Dog_ID],user_signature=True))}]
>>         links.append( {'header':'Scribe Sheets',
>>             'body': lambda r: SPAN( *[A(("" if i==0 else ", 
>> ")+d.f_Date.strftime("%A"),
>>                                         
>> _href=URL(c='course',f='scribe_sheets',extension='pdf',vars={'set':'%d_%d_%d'%(t.f_UKI_ID,i,r.f_Dog_ID)},user_signature=True),
>>                                         _target="_blank") for i,d in 
>> enumerate(tds)] ) } )
>>         form = SQLFORM.grid(query, csv=False, details=False, 
>> fields=fields, headers=headers, searchable=False, create=False, 
>> args=request.args,
>>             links = links, **args)
>>         return locals()
>>
>> This what gets printed:
>>
>> 99 Test Collie 2
>>
>> 1350 Tovah Border Collie 2
>>
>> 1582 Lexi Border Collie 2
>>
>> 1702 Bean Border Collie 2
>>
>> 1704 Ginger Border Collie 2
>>
>> 3865 Owen Border Collie 2
>>
>> 4099 Flirt Border Collie 2
>>
>> 5169 Super G Border Collie 2
>>
>> 5199 Emme Border Collie 2
>>
>> 5202 Beamer Border Collie 2
>> ...
>>
>> ---
>>
>> 1702 Bean Border Collie 2
>>
>> 1704 Ginger Border Collie 2
>>
>> 3865 Owen Border Collie 2
>>
>> 4099 Flirt Border Collie 2
>>
>> 5169 Super G Border Collie 2
>>
>> 5203 Audie Border Collie 2
>>
>> The list that appears after the --- is EXACTLY what appears in the list 
>> grid, once I have specified to sort on f_Dog_ID.
>>
>> These are the relevant SQL statements report via the response.toolabr:
>>
>> SELECT DISTINCT t_dog.id FROM t_dog, t_classlevel, t_run WHERE 
>> (((t_classlevel.f_Trial = 196) AND (t_classlevel.id = t_run.f_Class_Level)) 
>> AND (t_run.f_Dog = t_dog.id));
>>
>> 5.39ms
>>
>> SELECT  t_dog.id, t_dog.f_Dog_ID, t_dog.f_Name, t_dog.f_Breed, 
>> t_dog.f_Verified, t_dog.f_Lookup, t_dog.f_User, t_dog.uuid FROM t_dog WHERE 
>> (t_dog.id IN 
>> (1666,1667,1669,1671,1673,650,1675,652,1677,1678,1680,1688,1682,1411,1684,661,662,664,1689,1690,667,1692,1694,1696,673,1698,1700,1706,683,685,691,692,694,649,698,699,578,651,580,585,587,588,589,1686,1422,598,603,606,607,610,613,615,618,659,634,635,638))
>>  ORDER BY t_dog.f_Dog_ID;
>>
>> 0.17ms
>>
>> SELECT  t_dog.id, t_dog.f_Dog_ID, t_dog.f_Name, t_dog.f_Breed, 
>> t_dog.f_Verified, t_dog.f_Lookup, t_dog.f_User, t_dog.uuid FROM t_dog WHERE 
>> (t_dog.id IN 
>> (1666,1667,1669,1671,1673,650,1675,652,1677,1678,1680,1688,1682,1411,1684,661,662,664,1689,1690,667,1692,1694,1696,673,1698,1700,1706,683,685,691,692,694,649,698,699,578,651,580,585,587,588,589,1686,1422,598,603,606,607,610,613,615,618,659,634,635,638))
>>  ORDER BY t_dog.f_Dog_ID LIMIT 20 OFFSET 0;
>>
>> 0.14ms
>>
>> SELECT count(*) FROM t_dog WHERE (t_dog.id IN 
>> (1666,1667,1669,1671,1673,650,1675,652,1677,1678,1680,1688,1682,1411,1684,661,662,664,1689,1690,667,1692,1694,1696,673,1698,1700,1706,683,685,691,692,694,649,698,699,578,651,580,585,587,588,589,1686,1422,598,603,606,607,610,613,615,618,659,634,635,638));
>>
>> 0.12ms
>>
>> SELECT  t_dog.f_Name, t_dog.f_Breed, t_dog.f_Dog_ID, t_dog.id FROM t_dog 
>> WHERE (t_dog.id IN 
>> (1666,1667,1669,1671,1673,650,1675,652,1677,1678,1680,1688,1682,1411,1684,661,662,664,1689,1690,667,1692,1694,1696,673,1698,1700,1706,683,685,691,692,694,649,698,699,578,651,580,585,587,588,589,1686,1422,598,603,606,607,610,613,615,618,659,634,635,638))
>>  ORDER BY t_dog.f_Dog_ID, t_dog.id LIMIT 20 OFFSET 0;
>>
>> On Monday, December 12, 2016 at 9:00:09 PM UTC-5, Anthony wrote:
>>>
>>> On Monday, December 12, 2016 at 6:55:27 PM UTC-5, Scott Hunter wrote:
>>>>
>>>> Web2py: version 2.14.6, on OSX (from source, python 2.7.x) and at 
>>>> pythonanywhere (for the version that works properly).
>>>>
>>>> I think this is the SQL you are asking for:
>>>>
>>>> PRAGMA foreign_keys=ON;
>>>>
>>>> 0.01ms
>>>>
>>>> SELECT  auth_group.id, auth_group.role, auth_group.description FROM 
>>>> auth_group WHERE (auth_group.role = 'admin');
>>>>
>>>> 0.40ms
>>>>
>>>> SELECT  auth_membership.id, auth_membership.user_id, 
>>>> auth_membership.group_id FROM auth_membership WHERE 
>>>> ((auth_membership.user_id = 1) AND (auth_membership.group_id = 1));
>>>>
>>>> 0.10ms
>>>>
>>>> SELECT  t_trial.id, t_trial.f_Name, t_trial.f_Club, t_trial.f_UKI_ID, 
>>>> t_trial.f_Date, t_trial.f_Days, t_trial.f_RunFee, t_trial.f_MSFee, 
>>>> t_trial.f_CourseOrder, t_trial.f_LocalKey, t_trial.f_LabelType, 
>>>> t_trial.f_User, t_trial.f_PaperClasses, t_trial.uuid, 
>>>> t_trial.f_ReserveUser, t_trial.f_Access, t_trial.f_xlsx, 
>>>> t_trial.f_Next_Contact, t_trial.f_Next_Raw, t_trial.f_Next_Measurement, 
>>>> t_trial.f_Paid, t_trial.f_PaidWhen, t_trial.f_PaidAmount, 
>>>> t_trial.f_PaymentID, t_trial.f_Status, t_trial.f_Requested, 
>>>> t_trial.f_PaymentRecord FROM t_trial WHERE (t_trial.f_UKI_ID = 1321);
>>>>
>>>> 0.17ms
>>>>
>>>> SELECT  auth_group.id, auth_group.role, auth_group.description FROM 
>>>> auth_group WHERE (auth_group.role = 'admin');
>>>>
>>>> 0.04ms
>>>>
>>>> SELECT  auth_membership.id, auth_membership.user_id, 
>>>> auth_membership.group_id FROM auth_membership WHERE 
>>>> ((auth_membership.user_id = 1) AND (auth_membership.group_id = 1));
>>>>
>>>> 0.03ms
>>>>
>>>> SELECT  t_trialday.id, t_trialday.f_TrialDay, t_trialday.f_Date, 
>>>> t_trialday.f_CourseNames, t_trialday.f_CLMap, t_trialday.f_SmallToTall, 
>>>> t_trialday.f_Heights, t_trialday.f_Judge, t_trialday.f_ResultCounter, 
>>>> t_trialday.f_LastResultCourse, t_trialday.f_LastResultClassCourse, 
>>>> t_trialday.f_MCJFirst, t_trialday.uuid FROM t_trialday WHERE 
>>>> (t_trialday.f_TrialDay LIKE '1321-%' ESCAPE '\') ORDER BY 
>>>> t_trialday.f_Date;
>>>>
>>>> 0.32ms
>>>>
>>>> SELECT DISTINCT t_dog.id FROM t_dog, t_classlevel, t_run WHERE 
>>>> (((t_classlevel.f_Trial = 196) AND (t_classlevel.id = 
>>>> t_run.f_Class_Level)) AND (t_run.f_Dog = t_dog.id));
>>>>
>>>> 5.50ms
>>>>
>>>> SELECT count(*) FROM t_dog WHERE (t_dog.id IN 
>>>> (1666,1667,1669,1671,1673,650,1675,652,1677,1678,1680,1688,1682,1411,1684,661,662,664,1689,1690,667,1692,1694,1696,673,1698,1700,1706,683,685,691,692,694,649,698,699,578,651,580,585,587,588,589,1686,1422,598,603,606,607,610,613,615,618,659,634,635,638));
>>>>
>>>> 0.18ms
>>>>
>>>> SELECT  t_dog.f_Name, t_dog.f_Breed, t_dog.f_Dog_ID, t_dog.id FROM t_dog 
>>>> WHERE (t_dog.id IN 
>>>> (1666,1667,1669,1671,1673,650,1675,652,1677,1678,1680,1688,1682,1411,1684,661,662,664,1689,1690,667,1692,1694,1696,673,1698,1700,1706,683,685,691,692,694,649,698,699,578,651,580,585,587,588,589,1686,1422,598,603,606,607,610,613,615,618,659,634,635,638))
>>>>  ORDER BY t_dog.f_Dog_ID, t_dog.id LIMIT 20 OFFSET 0;
>>>>
>>>> 0.15ms
>>>>
>>>> PRAGMA foreign_keys=ON;
>>>>
>>>>
>>>> Now sure what you mean by "the SQL you are running"
>>>>
>>>
>>> You said, "If I do the query myself." What did you mean by that?
>>>
>>> Are you sure you have the same dataset on your Mac? If you run the above 
>>> SQL query (the last one) outside of web2py, do you get a different set of 
>>> records from what you see in the grid?
>>>
>>> Anthony 
>>>
>>>>

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to