Thanks for the reply. I tried you sugestion but still no joy. I haven't 
included all the code 
so that the examples as simple as possible. I can try to attach some of my 
code and send it
to you if you wish. 

If you add some code such as:
else :
        record = 'No part number URL should read 
"update_inventory?partnum=something"'
        return dict(record=record)

then it returns that message when you submit an update, but the database is 
still not being updated.


On Thursday, June 7, 2012 11:11:41 AM UTC-5, Anthony wrote:
>
> What are you returning in case no rows are found? Also, you can instead do:
>
> row = db(db.invent.partnum == request.vars.partnum).select().first()
> if row:
>     etc.
>
> .first() returns the first row or None if there are no records.
>
> Anthony
>
> On Thursday, June 7, 2012 10:49:54 AM UTC-4, Joel Robinson wrote:
>>
>> 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