Maybe the :

migrate=False


I don't see it in your model so maybe web2py try to modify you database??

I have never use keyed table since web2py is not designed for and strongly
suggest to migrate data into a surrogate refactored database model...

Richard

On Wed, Feb 8, 2012 at 3:07 PM, Omi Chiba <ochib...@gmail.com> wrote:

> >Do you have a compatible DMS?
> Yes, I'm using DB2.
>
>
>
> On Feb 8, 2:01 pm, Richard Vézina <ml.richard.vez...@gmail.com> wrote:
> > ote that currently this is only available for DB2, MS-SQL, Ingres and
> > Informix, but others can be easily added.
> >
> > At the time of writing, we cannot guarantee that the primarykey attribute
> > works with every existing legacy table and every supported database
> > backend. For simplicity, we recommend, if possible, creating a database
> > view that has an auto-increment id field.
> >
> > Here what the book says... Do you have a compatible DMS?
> >
> > Richard
> >
> >
> >
> >
> >
> >
> >
> > On Wed, Feb 8, 2012 at 2:45 PM, Omi Chiba <ochib...@gmail.com> wrote:
> > > I have legacy table called IQWAGFTY which doesn't have id field so I
> > > specify primarkey for the existing field.
> >
> > > I received KeyError: 'TYPRCD' for crud.updae but not crud.create. What
> > > am I doing wrong or is it not supported to update with primarykey ?
> >
> > > Model
> > > -------------
> > > db.define_table('IQWAGFTY',
> > >    Field('TYPRCD', length=15, label="Product Code:"),
> > >    Field('TYPRKJ', length=50, label="Part Number:"),
> > >    Field('TYTYPE', length=2, label="Type:"),
> > >    Field('TYFLAG', length=1, default=""),
> > >    Field('TYUUSR', length=128, default = auth.user.username.upper()
> > > if auth.user else None, label="Updated by:"),
> > >    Field('TYUDAT', 'datetime', default=request.now, label="updated
> > > on:"),
> > >    primarykey=['TYPRCD'])
> >
> > > Contoller (update:NG)
> > > ------------------------------
> > > def test():
> > >    return dict(form=crud.update(db.IQWAGFTY,
> > > db.IQWAGFTY(db.IQWAGFTY.TYPRCD=='000115126002200')))
> >
> > > TRACEBACK:
> > > Traceback (most recent call last):
> > >  File "D:\web2py\gluon\restricted.py", line 194, in restricted
> > >    exec ccode in environment
> > >  File "D:/web2py/applications/Inventory_Reserve_Admin/controllers/
> > > default.py", line 111, in <module>
> > >  File "D:\web2py\gluon\globals.py", line 149, in <lambda>
> > >    self._caller = lambda f: f()
> > >  File "D:\web2py\gluon\tools.py", line 2456, in f
> > >    return action(*a, **b)
> > >  File "D:/web2py/applications/Inventory_Reserve_Admin/controllers/
> > > default.py", line 68, in test
> > >    return dict(form=crud.update(db.IQWAGFTY,
> > > db.IQWAGFTY(db.IQWAGFTY.TYPRCD=='000115126002200')))
> > >  File "D:\web2py\gluon\tools.py", line 2978, in update
> > >    detect_record_change = self.settings.detect_record_change):
> > >  File "D:\web2py\gluon\sqlhtml.py", line 1033, in accepts
> > >    record_id = dict((k, request_vars[k]) for k in
> > > self.table._primarykey)
> > >  File "D:\web2py\gluon\sqlhtml.py", line 1033, in <genexpr>
> > >    record_id = dict((k, request_vars[k]) for k in
> > > self.table._primarykey)
> > > KeyError: 'TYPRCD'
> >
> > > Contoller(create:OK)
> > > -----------------------------
> > > def test():
> > >    return dict(form=crud.create(db.IQWAGFTY))
>

Reply via email to