Hi Alan,

Thanks for the response, you are correct. I was passing what I thought was 
a query to the SQLForm.grid function without realizing that when you call 
.select() on a query it then becomes a Rows object. 

I've realize because of the Left join query I use, I'm not going to be able 
to use the SQLForm.grid. So, I've realigned my thinking. I'm also 
attempting to render the data as an Ext.js item, so I'm working more in the 
following line of thought:

def compliance():

    rows= 
db((db.MONITOR_CODES.MC_ID==db.MC_VALID_RESPONSES.MC_ID)&(db.MC_VALID_RESPONSES.COMPLIANCE_FLAG=='N')).select(db.MONITOR_CODES.MC_DESCR,
 
db.MC_VALID_RESPONSES.MC_ID.count(),left=db.MONITOR_CODES.on
    
(db.MONITOR_CODES.MC_ID==db.MC_VALID_RESPONSES.MC_ID),groupby=db.MONITOR_CODES.MC_ID).as_list()
    
    pagescript = str(SCRIPT('''

Ext.onReady(function(){

    var t= '''+ str(gluon.contrib.simplejson.dumps(rows))+''';

    var main = Ext.create('Ext.Viewport', {
        layout: {
            xtype: 'vbox',
            align: 'stretch',
            pack:'center',
        },
        title: 'Non-Compliance Monitor Codes',
        items: [{
            items: [tb],
            height: tb.height,
            minHeight: tb.height,
        },{
            items:'''+str(rows)+''',
            height: 200,
            minHeight: 200
       }],
        renderTo: "main"
    });
});
    ''', _language='javascript'))

    return dict(pagescript=XML(pagescript))    

Of course this just dumps the JSON data into the javascript in the very 
ugly JSON array I should be expecting from that call. Which is just fine. 
Now I just have to figure out how to render that JSON data in a nice table 
with Column headers. The JSON data comes out like this in the item brackets 
when you look at "view source":

items:[{'MONITOR_CODES': {'MC_DESCR': '"Are you using a bednet correctly every 
night?"'}, '_extra': {'COUNT(MC_VALID_RESPONSES.MC_ID)': 1}}, {'MONITOR_CODES': 
{'MC_DESCR': '"Do you have a military or civilian bednet issued to you?"'}, 
'_extra': {'COUNT(MC_VALID_RESPONSES.MC_ID)': 1}}, {'MONITOR_CODES': 
{'MC_DESCR': '"If you have a civilian bednet, is it treated with 
insecticide?"'}, '_extra': {'COUNT(MC_VALID_RESPONSES.MC_ID)': 1}}, 
{'MONITOR_CODES': {'MC_DESCR': '"If you have a civilian bednet, are you tucking 
it under the mattress every night when you use it?"'}, '_extra': 
{'COUNT(MC_VALID_RESPONSES.MC_ID)': 1}}, {'MONITOR_CODES': {'MC_DESCR': '"Is 
your bednet in good shape with no holes in the netting?"'}, '_extra': 
{'COUNT(MC_VALID_RESPONSES.MC_ID)': 1}}, {'MONITOR_CODES': {'MC_DESCR': 'Why 
Not?'}, '_extra': {'COUNT(MC_VALID_RESPONSES.MC_ID)': 2}}, {'MONITOR_CODES': 
{'MC_DESCR': 'Why Not?'}, '_extra': {'COUNT(MC_VALID_RESPONSES.MC_ID)': 3}}, 
{'MONITOR_CODES': {'MC_DESCR': 'Why Not?'}, '_extra': 
{'COUNT(MC_VALID_RESPONSES.MC_ID)': 2}}],


Cheers,
Jamie 

On Saturday, March 9, 2013 6:13:24 PM UTC-5, Jamie Jernigan wrote:
>
> Hi ,
>
> I'm new to Web2py and I've been struggling with this the last couple of 
> days. I'm getting 
> 'Rows' object has no attribute '_db'
>
>
> on:
>
>  query= 
> db((db.MONITOR_CODES.MC_ID==db.MC_VALID_RESPONSES.MC_ID)&(db.MC_VALID_RESPONSES.COMPLIANCE_FLAG=='N')).select(db.MONITOR_CODES.MC_DESCR,
>  
> db.MC_VALID_RESPONSES.MC_ID.count(),left=db.MONITOR_CODES.on
>     
> (db.MONITOR_CODES.MC_ID==db.MC_VALID_RESPONSES.MC_ID),groupby=db.MONITOR_CODES.MC_ID)
>     
>     fields=[db.MONITOR_CODES.MC_DESCR, db.MC_VALID_RESPONSES.MC_ID.count()]
>     headers={db.MONITOR_CODES.MC_DESCR: 'Non-Compliant Codes',
>              db.MC_VALID_RESPONSES.MC_ID.count(): 'Number of Non-Compliant 
> Responses'}
>     
>     form = SQLFORM.grid(query=query, fields=fields, headers=headers, 
> sortable=True, create=False, deletable=False, editable=False, 
> maxtextlength=64, paginate=25)
>
> Thank you for your time,
>
> Jamie
>

-- 

--- 
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/groups/opt_out.


Reply via email to