Thanks for the reply, but its still not working correctly. I changed the 
code to the following:

if rows:
        row = rows[0]
        record = crud.update(db.invent, row.id )
        return dict(record=record)

with a URL like:

http://localhost:8000/GeorgesTV/qrinv/update_inventory?partnum=LAMP-4

I will get the correct web page, but when I change a value and hit the 
submit button I just get sent to
a page that says "None". If I reload the page the values are unchanged.  
Nothing was updated. 

Joel Robinson

On Thursday, June 7, 2012 9:33:57 AM UTC-5, Anthony wrote:
>
> 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