Yeah, I think you'll have to show more code.

On Thursday, June 7, 2012 12:58:45 PM UTC-4, Joel Robinson wrote:
>
> 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