Errors and RWDBStatus
When an error or warning is generated by an Access Module call to the ODBC API, information about the event is retrieved via a call to SQLGetDiagRec() and transferred to an RWDBStatus. This RWDBStatus object is passed as a parameter to the installed error handler. The following list provides the format that RWDBStatus uses to describe events reported by the ODBC driver:
*errorCode: RWDBStatus::serverError if an error occurred, or RWDBStatus::ok if a warning is being generated, or RWDBStatus::notConnected if a communication error occurred indicated by a SQLSTATE code of 08XXX; for example, "08001"
*message: "SQL call failed" if an error occurred, or "Success with info" if a warning is being generated
*vendorMessage1: the SQLSTATE code; for example, "21S01"
*vendorMessage2: the diagnostic message; for example, "Driver not capable"
*vendorError1: the native error code
*vendorError2: the SQLRETURN code from the SQL function that failed
An application can use the mapping shown previously to write an error handler that reports errors on cerr and issues warnings on clog. For example:
 
void myErrorHandler(const RWDBStatus& stat)
{
if (stat.errorCode() != RWDBStatus::ok) // Errors
cerr << stat.vendorMessage2();
else // Warnings
clog << stat.vendorMessage2();
}
All errors associated with the status will be reported.