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 >>>>>>> >>>>>>>