Re: int8 becames string in BDE :-( - Mailing list pgsql-odbc
From | Laszlo Tibor |
---|---|
Subject | Re: int8 becames string in BDE :-( |
Date | |
Msg-id | NDELKOGEMPNIBNDBEANMMEDICDAA.ltibor@mail.tiszanet.hu Whole thread Raw |
In response to | Re: int8 becames string in BDE :-( (Kovacs Zoltan <kovacsz@pc10.radnoti-szeged.sulinet.hu>) |
List | pgsql-odbc |
Signed as Tibor, I am Gabor, co-worker of Zoltan. (sorry to use this confusing way, but I'm not a member of this list just popped in to help them) Further experiments I did today: downloaded Hiroshi's 7.2.0.2 driver from a page mentioned earlier and found the following: ---------------- 1a with psqlodbc.dll (ODBC ver 2.5) BDE found count() to be a non-numeric value (deducted from the fact that BDE aligned it to the left in the grid and that OE complained about Integer<->String incompatibility) 1b with psqlodbc30.dll (ODBC ver 3) BDE found count() to be numeric (found out that it's Largeint by setting a fake TIntegerField type to a "count() as xxx" field. Changing field type to TLargeintField, it worked.) 2a using int4(count()), managed to work around the problem with ODBC 2.5, but it is inconvenient and ugly since there are hundreds of source files in our projects. 2b with psqlodbcl30 we could use a Largeint field type instead, which is good, but at the first try, a certain action caused Access Violation within psqlodbc30.dll itself. I can send the structure of this query if it helps. 3b Turned off "(Trial) Updatable Cursors" (it was checked in this new installation of psqlodbc30.dll while it was unchecked in all the other DSN's) in DataSource options, and now the EXEcutable sends a different error, _earlier_, stating [Microsoft][ODBC driver manager] Fetch type out of range My current driver settings: Driver. Disable GenOpt, KSQO, CommLog; Unknown Sizes=Maximum; Text As LongVarChar DataSource: LF-CRLF convert; protocol=7.X/6.4. As I mentioned in 2b, this error wasn't an issue but a different error occured later with "Updatable Cursors" checked. The code that caused the Fetch error is a Borland code, if you are interested in Delphi... if not VarIsNull(FKeyValue) and FListLink.DataSet.Active and FListLink.DataSet.Locate(FKeyFieldName, FKeyValue, []) then ... where FKeyValue is indeed an integer value, DataSet is indeed an open dataset, (Active is true), and FKeyFieldName is indeed a key field of the dataset. Again, with the old drivers (Updatable Cursors UNchecked), this wasn't a problem, neither with the new driver (Updatable Cursors checked) . If it helps, I can send you the query causing this problem, too. ------------- Searching the web, I found two tips, will check them out: (i) http://archives.postgresql.org/pgsql-interfaces/1998-10/msg00170.php : Well, my previous problem ('[Microsoft][ODBC driver manager] Fetch type out of range') dissappear when I changed the option hStmt -> CursorType from Keyset Driven to Static. ... but it mentions other problems and reveals that it's Borland C++Builder 3 while we use BCB5 (ii) http://support.microsoft.com/default.aspx?scid=kb;EN-US;q141171 : PRB: RDO Forward-Only Cursor Doesn't Allow MoveLast (Q141171) ... but this applies to MS Visual Basic Enterprise 4.0 only. BTW, I found MS Jet to be a DLL. Call me a lamer but how can you invoke this DLL? (if it is what you used to change the return value) Shall I install MS Access? Yours, Gabor > -----Original Message----- > From: Kovacs Zoltan > Sent: Wednesday, May 29, 2002 9:02 AM > > On Wed, 29 May 2002, Hiroshi Inoue wrote: > > > Kovacs Zoltan wrote: > > > > > > Dear Hiroshi and Tom, > > > > > > I downloaded the latest psqlodbc.dll for PostgreSQL 7.2.1. > > > My problem is I > > > should migrate from 7.1.3 to 7.2.1 because I need "CREATE OR REPLACE > > > FUNCTION", but COUNT(*) returns int8 now. Unfortunately, > > > Borland Database > > > Engine and/or ODBCExpress (from Korbitec Pty.) understands > > > int8 as string. > > > > Is it the true cause ? > > Isn't it because of the current driver's behavior that > > returns SQL_VARCHAR for int8 ? OTOH certainly there are > > some applications which can't handle SQL_BIGINT. > > Recently I changed the driver to return SQL_NUMERIC > > for int8 with Microsoft-jet and it seems to work. > > Where can I check for the setting? Can I adjust it in the "Driver" menu? > I'm using version 07_02_0001, announced on 15th April. > > Thanks, Zoltan
pgsql-odbc by date: