Fixed :).

using smart_query:

db.smart_query([db.status],query).delete()

where query is in string format.

On Wednesday, 21 November 2012 15:23:44 UTC+5:30, Amit wrote:
>
> I have done slight changes in the code and its working for select() 
> statement but still facing problem in case of delete():
>
> code:
>
> def test():
>     
>     query = request.vars['keywords']
>     
>     if query:
>         print query        
>         row =str(db(query).select(db.status.ALL))
>         if row:
>             print row
>     redirect(URL('status'))
>
> In this case query string is : *status.id = "12"*
> So I am getting result properly, but problem is:
>  if I remove *db.status.ALL* from select() statement , it again gives the 
> same error : 
> *<type 'exceptions.SyntaxError'> Set: no tables selected*
>
>
> Same applies for delete() statement, even for delete we can't specify the 
> database table name as a parameter like select().
>
>
>
> On Wednesday, 21 November 2012 12:01:08 UTC+5:30, Amit wrote:
>>
>> I have added button "Delete" beside Clear button on SQLFORM.grid and when 
>> user selects query and click on it , I am passing the query to my 
>> controller function and using regular expression I just prepending "db." 
>> and changing "=" to "==" and passing the query to the db() function but it 
>> throws SyntaxError : Set: no tables selected.
>>
>> Please check below the code:
>>
>> def status():
>>     
>>     grid = SQLFORM.grid(db.status)
>>     
>>     grid[0][1][1].components.append(TAG.a('Delete',_id="px-delete",\
>>                                           _class 
>> ="btn",_onclick="window.location 
>> = '" \
>>                                           + URL('default','test')+"?"+ "'+ 
>> $('#web2py_keywords').serialize();\
>>                                            "))
>>     
>>     return locals()
>>
>>
>> def test():
>>     
>>     query = request.vars['keywords']
>>     
>>     if query:
>>         modfied_query = re.sub(r'(status)', r'db.\1', query)
>>         final_query = re.sub(r'(=)', r'=\1', modfied_query)             
>>    
>>         row =db(final_query).select().first()
>>         if row:
>>             print row            
>>     redirect(URL('status'))
>>
>> here, status is the grid view where I added the Delete button and after 
>> query selection If I click button , I am able to get the query like 
>> status.id = "12", I changed it using regex to db.status.id == "12" and 
>> passing the final string to db() function , please check test() function.
>>
>> I am getting error on the below statement:
>>
>> *row **=db(final_query).select().first()*
>>
>> where "final_query" value will be db.status.id == "12".
>>
>> But if I use the same query like this:
>>
>> *row =db(db.status.id == "12").select().first()*
>>
>> it works fine.
>>
>> So not sure what I am doing wrong on the passing string as query.
>>
>>

-- 



Reply via email to