Handling Errors with the SQL::CallResult Object

AlphaDAO contains a special object named SQL::CallResult to help you diagnose problems. Suppose you take the following script, which works, and change the name of the database from "alphasports.mdb" to "alpha.mdb".

Before:

dim conn as SQL::Connection

? conn.open("{A5API=Access,FileName='C:\Program Files\a5v8\MDBFiles\Alphasports.mdb',UserName='Admin'}")

= .T.

After:

dim conn as SQL::Connection

? conn.open("{A5API=Access,FileName='C:\Program Files\a5v8\MDBFiles\Alpha.mdb',UserName='Admin'}")

= .F.

Note that the .Open() method returned .F. (FALSE), meaning that an error occurred. If you want to know what went wrong, take a look at the connection object's .CallResult property.

? conn.CallResult

= API = ""

Canceled = .F.

Code = 195

Error = .T.

LastInsertedIdentity = <No data returned>

NativeCode = -1

NativeText = [Microsoft][ODBC Microsoft Access Driver] Could not find file '(unknown)'.

SQL State is: HY000

[Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed

SQL State is: IM006

RowsAffected = 0

Success = .F.

Syntax = ""

Text = Database API specific error

Your database has returned the following error code and description to Alpha Five.

Consult your database documentation for further information.

-1 - '[Microsoft][ODBC Microsoft Access Driver] Could not find file '(unknown)'.

SQL State is: HY000

[Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed

SQL State is: IM006'

Warnings = .F.

Or to narrow things down, look at the CallResult.text property.

? conn.CallResult.Text

= Database API specific error

Your database has returned the following error code and description to Alpha Five.

Consult your database documentation for further information.

-1 - '[Microsoft][ODBC Microsoft Access Driver] Could not find file '(unknown)'.

SQL State is: HY000

[Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed

SQL State is: IM006'

AlphaDAO does its best to interpret the error messages returned by back-end databases into meaningful statements that you can use.

conn.close()

Supported By

Alpha Five Version 8 Enterprise Edition

Limitations

Desktop applications only.

See Also

Working with SQL Databases, SQL::CallResult Object