Thread: ODBC handling of bools?
Hello. I have a VB5 application which uses ODBC 6.5 (2/4/00) to access a Postgresql 7.0.2 database. Everything works just fine except for booleans. I manually generate the SQL to be sent to the ODBC driver ] eg select * from member where weekends or select * from member where weekends=true but this fails because somewhere in the driver, this is translated to select * from member where weekends <> 0 and this causes an error because there is no operator to compare bools and integers. I have tried with the "bools as char" option on and off with no effect. I thought that this stuff had been fixed a couple of years ago. Did it break again or am I just missing something basic? How does one make bool tests work ? Cheers and thanks, Stephen Davies ======================================================================== Stephen Davies Consulting scldad@sdc.com.au Adelaide, South Australia. Voice: 08-8177 1595 Computing & Network solutions. Fax: 08-8177 0133
In the ODBC driver configuration (click on the Driver button) and set "Bools as Char" to on. Michael Davis Database Architect and Senior Software Engineer, Seva Inc. Office: 303-460-7360 Fax: 303-460-7362 Mobile: 720-320-6971 Email: mdavis@sevainc.com -----Original Message----- From: Stephen Davies [SMTP:scldad@sdc.com.au] Sent: Sunday, December 17, 2000 2:36 AM To: pgsql-interfaces@postgresql.org Subject: ODBC handling of bools? Hello. I have a VB5 application which uses ODBC 6.5 (2/4/00) to access a Postgresql 7.0.2 database. Everything works just fine except for booleans. I manually generate the SQL to be sent to the ODBC driver ] eg select * from member where weekends or select * from member where weekends=true but this fails because somewhere in the driver, this is translated to select * from member where weekends <> 0 and this causes an error because there is no operator to compare bools and integers. I have tried with the "bools as char" option on and off with no effect. I thought that this stuff had been fixed a couple of years ago. Did it break again or am I just missing something basic? How does one make bool tests work ? Cheers and thanks, Stephen Davies ======================================================================== Stephen Davies Consulting scldad@sdc.com.au Adelaide, South Australia. Voice: 08-8177 1595 Computing & Network solutions. Fax: 08-8177 0133
Hi Stephen, To test boolean values I use: SELECT * FROM member WHERE weekends='t' ... and it works just fine through the ODBC driver. (ODBC 6.50, PostgreSQL 7.02). Hope this helps Francis Solomon > Hello. > > I have a VB5 application which uses ODBC 6.5 (2/4/00) to > access a Postgresql 7.0.2 > database. > > Everything works just fine except for booleans. > > I manually generate the SQL to be sent to the ODBC driver ] > eg select * from member where weekends > or select * from member where weekends=true > > but this fails because somewhere in the driver, this is translated to > select * from member where weekends <> 0 and this causes an error > because there is no operator to compare bools and integers. > > I have tried with the "bools as char" option on and off with > no effect. > > I thought that this stuff had been fixed a couple of years > ago. Did it > break again or am I just missing something basic? > > How does one make bool tests work ?
Thanks to those who replied to my earlier posting. The "Bools as Char" option _was_ the immediate fix. What I had forgotten was that I was using Access as "middleware" and that you have to delete and relink the Access table for the driver change to take effect. (The app involved was originally written for Access and then migrated to Postgresql) My queries now work but the problem now, however, is that the bound checkboxes associated with the bools now give "type mismatch" errors (which they didn't before I changed the driver opton) Cheers and thanks, Stephen Davies ======================================================================== Stephen Davies Consulting scldad@sdc.com.au Adelaide, South Australia. Voice: 08-8177 1595 Computing & Network solutions. Fax: 08-8177 0133