Is there a wiki page on this sort of useful bit of code? On Fri, 2007-03-30 at 09:00 -0700, Paul McNett wrote: > Cory Cross wrote: > >> From: Paul McNett <[EMAIL PROTECTED]> > >> Sounds like DOW is derived from orders.date. I'd use VirtualFields for > >> this. > >> pkm ~ http://paulmcnett.com > > > > Looks like I gave a faulty analogy. Sorry to waste your time. > > The correct analogy: > > PCG: Order-LineItem-Part > > No problem. VirtualFields are great for making columns with reformatting > or additional calculations of existing actual fields. You are needing > something similar: to update the values of derived fields originally > gotten via a sql join, but without executing the query all over again. > Here's what I do. > > ##- in my base bizobj, I have: > > def afterSave(self): > self.fillDerivedFields() > > > def fillDerivedFields(self): > """Hook for subclasses.""" > pass > > ##- in my bizobjs, that have derived fields to fill upon save, > ##- I create a tempcursor to get the derived values, and then > ##- set the field values appropriately. Here's sample code > ##- that fills in derived values from several sources: > > def fillDerivedFields(self): > cur = self.getTempCursor() > > # cust_name, cust_account: > cur.UserSQL = "select name, account from customers where > id='%s'" % > self.Record.cust_id > cur.requery() > if cur.RowCount > 0: > self.Record.cust_name = cur.Record.name > self.Record.cust_account = cur.Record.account > else: > self.Record.cust_name = None > self.Record.cust_account = None > > # prod_name: > cur.UserSQL = """ > select product_lines.name > from prod_cust > inner join product_lines > on product_lines.id = prod_cust.prod_id > where prod_cust.id='%s'""" % self.Record.prod_cust_id > cur.requery() > if cur.RowCount > 0: > self.Record.prod_name = cur.Record.name > else: > self.Record.prod_name = None > > # status_name: > cur.UserSQL = "select name from production_order_status where > id=%s" % > self.Record.status_id > cur.requery() > if cur.RowCount > 0: > self.Record.status_name = cur.Record.name > else: > self.Record.status_name = None > > > > "description" fields change appropriately. What is the proper way to > > update them without requerying the whole Form? Or should I just > > manipulate the display boxes manually from a cursor? > > I'm not sure I've come up with the best way, but it works well for me. > > Paul > > > _______________________________________________ > Post Messages to: [email protected] > Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users > Searchable Archives: http://leafe.com/archives/search/dabo-users >
_______________________________________________ Post Messages to: [email protected] Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users Searchable Archives: http://leafe.com/archives/search/dabo-users This message: http://leafe.com/archives/byMID/dabo-users/[EMAIL PROTECTED]
