On Friday 31 August 2007 14:26, dw wrote:
> Hello:
> I have used the Class Designer with a sqlite3 database to create a grid
> that displays the look up value
> that corresponds to foreign key value, as described in archived posts and
> the Wiki. When I use the
> SQL Builder to create the query which contains a field alias, things
> display properly. When I create the identical
> SQL statement manually and utilize UserSQL, I generate an error. The manual
> SQL statement works when I run it
> directly against sqlite3 and the database. I am interested in using UserSQL
> and manual SQL statements rather
> than SQL Builder, in order to create SQL statements that contain Table
> aliases. SQL Builder does not seem to
> allow Table aliases although it does permit field aliases.
> I am running Windows XP Pro SP2, Python Version: 2.4.4 on win32, Dabo
> Version: Version 0.9a; Revision 3335,
> UI Version: 2.8.1.1 on wxMSW and SQLite version 3.3.12.
>
>
>
> The functioning code is:
> /**********works****************/
> class FotoinfBizobj(dabo.biz.dBizobj):
> def afterInit(self):
> self.DataSource = "FotoInf"
> self.KeyField = "count0"
> self.LinkField = "recordID_fk"
>
> self.addFrom("FotoInf")
> self.addField("recordID_fk")
> self.addField("FInfoID_fk")
> self.addField("count0")
> self.addJoin("InfoPT", "FotoInf.FInfoID_fk=
> InfoPT.InfoID")
> self.addField("InfoPT.photoType as phType")
>
> def validateRecord(self):
> """Returning anything other than an empty string from
> this method will prevent the data from being saved.
> """
> ret = ""
> # Add your business rules here.
> return ret
>
>
> fotoinfBizobj = FotoinfBizobj(self.Connection)
> self.addBizobj(fotoinfBizobj)
>
> fotoinfBizobj.setLimitClause(None)
> recnameBizobj.addChild(fotoinfBizobj)
>
>
> The code that generates the error is:
> /******************does not work***********************************/
>
> class FotoinfBizobj(dabo.biz.dBizobj):
> def afterInit(self):
> self.DataSource = "FotoInf"
> self.KeyField = "count0"
> self.LinkField = "recordID_fk"
>
>
>
> def validateRecord(self):
> """Returning anything other than an empty string from
> this method will prevent the data from being saved.
> """
> ret = ""
> # Add your business rules here.
> return ret
>
>
> fotoinfBizobj = FotoinfBizobj(self.Connection)
> self.addBizobj(fotoinfBizobj)
>
> testsql = """Select FotoInf.count0, FotoInf.recordID_fk,
> FotoInf.FInfoID_fk, InfoPT.photoType as phType
> From FotoInf inner join InfoPT on FotoInf.FInfoID_fk = InfoPT.InfoID"""
> fotoinfBizobj.UserSQL= testsql
>
> fotoinfBizobj.setLimitClause(None)
> recnameBizobj.addChild(fotoinfBizobj)
I don't use SQLite so take what I'm saying with a grain of salt. When I need
to add a field from a join table I also insure that the field is in my
NonUpdate statement as in;
self.NonUpdateFields=["luspecies"]
self.addField("agspecies.species as luspecies")
self.addJoin('public.agvarieties','agvarieties.pkid=agpoptrs.fk_variety',joinType='left
outer')
It's my understanding a bizobj can only update one table.
--
John Fabiani
_______________________________________________
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]