There are three types of error cases in connectivity issues with ODBC:
- FoxPro Errors
- ODBC Errors
- Connectivity Warnings
FoxPro Errors
These are typical Xbase errors that are not produced by ODBC. These errors
include fundamental errors such as invalid parameters, insufficient memory,
and so on. To trap these errors, you can use the traditional FoxPro error
handling paradigm, including ON ERROR.
ODBC Errors
These are errors returned from the ODBC Application Programming Interface
(API). Any error returned from the ODBC API is recognized by Visual FoxPro
as an error outside of the scope of the internal Visual FoxPro operation.
An example of this is when an SQL function called within a Visual FoxPro
application returns a -1 indicating that the function failed. In this case,
the value returned by the SQL function indicates failure and the errors are
saved and made accessible by using AERROR(). The exact process is described
in the following article in the Microsoft Knowledge Base:
134721�
How to Handle Visual FoxPro Connectivity Errors w/o DBERROR()
In this case, you can't use an ON ERROR routine.
Connectivity Warnings
These errors indicate situations where the ODBC-related function is
completed, but the user is warned that an exception occurred. For example,
some ODBC driver parameters were not set, conversion errors occurred while
fetching data, the user canceled the function, multiple updates were
produced by a single view row due to a non-unique key, and so on.
Warnings bring up simple alert windows that you can disable by setting the
DispWarning connection property to false (.F.). You can use the
SQLSETPROP() function to set the DispWarning Property.
These warnings are saved and are accessible by using AERROR(). The exact
process is described in the following article in the Microsoft Knowledge
Base:
134721�
How to Handle Visual FoxPro Connectivity Errors w/o DBERROR()
However, if multiple warnings occur in the same connectivity command or
function, only the last one is available to AERROR(). This is different
from ODBC errors, which are batched in ODBC and buffered by the Visual
FoxPro error mechanism as a single error event.
In this case, you can't use an ON ERROR routine.