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