Hello all,
I took the v7 driver for a test drive and it looks like it properly
reports all referential integrity errors reported from the backend (this
was a bug in the v6). Kudos to the devel team; you guys are doing a
superb job hunting down and fixing those bugs :)
I did come across something peculiar though. It seems to me that ever
since I updated to the v7, the driver incorrectly reports the BOOL
values retrieved from the backend. I first noticed this (?bug?) in the
following snippet of code using VC++ and a CRecordset object.
**********************************************************************
strStmt = "SELECT someBackendFunctionThatReturnsBOOL('someTextValue') AS
answer";
rsSelect.Open(CRecordset::forwardOnly, strStmt);
if (db.CanTransact())
db.BeginTrans();
while (!rsSelect.IsEOF())
{
rsSelect.GetFieldValue("answer", vID, SQL_C_SSHORT);
rsSelect.MoveNext();
}
**********************************************************************
After going through the debug mode of Visual Studio using both the v6
and v7 drivers I verified that the value of vID.m_iVal was set to 1 if
the BOOL return value was true and 0 if false using the v6 (and probably
older versions v5, v4). Now the vID.m_iVal is always set to 0,
regardless of the return value of the backend function. Maybe I'm using
the wrong fieldType (SQL_C_SSHORT); how do other VC++ users retrieve
BOOL values using a CRecordset? Did anybody else come across this
problem?
Thanks,
-Kristis