Description
Occurs when a database error occurs in the DataWindow or DataStore.
PowerBuilder event information
Event ID: pbm_dwndberror
Argument |
Description |
---|---|
sqldbcode |
Long by value. A database-specific error code. See your DBMS documentation for information on the meaning of the code. When there is no error code from the DBMS, sqldbcode contains one of these values: -1 -- Cannot connect to the database because of missing values in the transaction object. -2 -- Cannot connect to the database. -3 -- The key specified in an Update or Retrieve no longer matches an existing row. This can happen when another user has changed the row after you retrieved it. -4 -- Writing a blob to the database failed. |
sqlerrtext |
String by value. A database-specific error message. |
sqlsyntax |
String by value. The full text of the SQL statement being sent to the DBMS when the error occurred. |
buffer |
DWBuffer by value. The buffer containing the row involved in the database activity that caused the error. For a list of valid values, see DWBuffer. |
row |
Long by value. The number of the row involved in the database activity that caused the error (the row being updated, selected, inserted, or deleted). |
Return codes
Set the return code to affect the outcome of the event:
0 -- Display the error message and trigger the Transaction object's DBError event if it is defined.
1 -- Do not display the error message, and trigger the Transaction object's DBError event if it is defined.
2 -- Display the error message and ignore the Transaction object's DBError event whether it is defined or not.
3 -- Do not display the error message and ignore the Transaction object's DBError event whether it is defined or not.
For information on setting the return code in a particular environment, see About return values for DataWindow events.
Usage
By default, when the DBError event occurs in a DataWindow control, it displays a system error message. You can display your own message and suppress the system message by specifying a return code of 1 in the DBError event.
Since DataStores are nonvisual, a system message does not display when the DBError event occurs in a DataStore. You must add code to the DBError event to handle the error.
If the row that caused the error is in the Filter buffer, you must unfilter it if you want the user to correct the problem.
Reported row number
The row number stored in row is the number of the row in the buffer, not the number the row had when it was retrieved into the DataWindow object.
Obsolete methods in PowerBuilder
Information formerly provided by the DBErrorCode and DBErrorMessage methods is available in the arguments sqldbcode and sqlerrtext.
Examples
This example illustrates how to display custom error messages for particular database error codes:
CHOOSE CASE sqldbcode CASE -195 // Required value is NULL. MessageBox("Database Problem", & "Error inserting row " + string(row) & + ". Please specify a value for Employee ID.") CASE ... // Code to handle other errors END CHOOSE RETURN 1 // Do not display system error message
See also