Same problem -- everything has to go inside your "if rows:" block -- don't 
attempt to create a crud.update form if no rows have been returned.

Anthony

On Thursday, June 7, 2012 10:30:17 AM UTC-4, Joel Robinson wrote:
>
> Thanks for the reply. I tried your sugestion but am still getting an 
> error, though a different one:
>
> Traceback (most recent call last):
>   File "/home/joel/Source/web2py/gluon/restricted.py", line 205, in restricted
>     exec ccode in environment
>   File "/home/joel/Source/web2py/applications/GeorgesTV/controllers/qrinv.py" 
> <http://127.0.0.1:8000/admin/default/edit/GeorgesTV/controllers/qrinv.py>, 
> line 136, in <module>
>   File "/home/joel/Source/web2py/gluon/globals.py", line 173, in <lambda>
>     self._caller = lambda f: f()
>   File "/home/joel/Source/web2py/applications/GeorgesTV/controllers/qrinv.py" 
> <http://127.0.0.1:8000/admin/default/edit/GeorgesTV/controllers/qrinv.py>, 
> line 131, in update_inventory
>     record = crud.update(db.invent, row.id )
> UnboundLocalError: local variable 'row' referenced before assignment
>
> Just to be clear the page is coming up initialy. This error only happens when 
> I click
> on the submit button. Thanks again for your help.
>
> Joel Robinson
>
>
>
> On Wednesday, June 6, 2012 4:14:29 PM UTC-5, Massimo Di Pierro wrote:
>>
>> Looks like the error is at
>>
>> row = rows[0] 
>>
>> because rows is empty (no records matching query). You need a check like 
>>
>> if rows:
>>     row = rows[0]
>>
>>
>>
>> On Wednesday, 6 June 2012 12:19:14 UTC-5, Joel Robinson wrote:
>>>
>>> First, let me give some background on what I've been trying to do. We 
>>> wanted to set up an inventory system using QR codes which would be put on 
>>> stickers on our stock and then scaned with smartphone when removing 
>>> inventory bring up the appropiate web page. The QR code should contain 
>>> something like: 
>>>     
>>>     http://GeorgesTV/qrinv/update_inventory?partnum=12345
>>>
>>> and the following is the code I wrote for update_inventory:
>>>
>>>     rows = db(db.invent.partnum == request.vars.partnum).select() 
>>>     # change rows object to row object
>>>     row = rows[0]
>>>     
>>>     # display queried object
>>>     record = crud.update(db.invent, row.id)
>>>     return dict(record=record)
>>>  
>>> initialy it would work fine it would run the query and pull up the 
>>> correct record but 
>>> if I tried to update the record I would get the folling error:
>>>     
>>>
>>> Traceback (most recent call last):
>>>   File "/home/joel/Source/web2py/gluon/restricted.py", line 205, in 
>>> restricted
>>>     exec ccode in environment
>>>   File 
>>> "/home/joel/Source/web2py/applications/GeorgesTV/controllers/qrinv.py" 
>>> <http://127.0.0.1:8000/admin/default/edit/GeorgesTV/controllers/qrinv.py>, 
>>> line 123, in <module>
>>>   File "/home/joel/Source/web2py/gluon/globals.py", line 173, in <lambda>
>>>     self._caller = lambda f: f()
>>>   File 
>>> "/home/joel/Source/web2py/applications/GeorgesTV/controllers/qrinv.py" 
>>> <http://127.0.0.1:8000/admin/default/edit/GeorgesTV/controllers/qrinv.py>, 
>>> line 116, in update_inventory
>>>     row = rows[0]
>>>   File "/home/joel/Source/web2py/gluon/dal.py", line 7755, in __getitem__
>>>     row = self.records[i]
>>> IndexError: list index out of range
>>>
>>> I thought maybe the request variable wasn't getting passed correctly when 
>>> updated so I made the following change:
>>>
>>>     session.partnum = request.vars.partnum
>>>     rows = db(db.invent.partnum == session.partnum).select()
>>>
>>> which didn't help either, but I then noticed that if I tried to pull up the 
>>> update_inventory page now without the query string
>>> it would come up since session varible was already set and it would update 
>>> correctly!
>>>
>>> I was eventualy able to get it work more or less how I wanted by writing a 
>>> page whose only function was to take the 
>>> query string set a session variable and then redirect you to the 
>>> update_inventory page. But I worry that using session varibles
>>> may cause unforseen problems eventualy.
>>>
>>> So what I would like to know, is this a bug I've found or am I going about 
>>> doing this incorrectly? Could someone explains
>>> what happens when you use crud.update and why I get this error when I try 
>>> to use query strings?
>>>
>>> Thanks in advance for your help.
>>>
>>> Joel Robinson
>>>
>>>

Reply via email to