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