What is BDE-Error 6945 and 2024?

What is BDE-Error 6945 and 2024?

Post by Arne Bay » Sat, 02 Mar 1996 04:00:00


can anybody tell me, what the BDE-error #6945 and #2024 is?
Where can I look up such information?

        Arne Bayer
/\                                       |        _/_/_/_/      _/_/_/_/ \
\_| Arne Bayer                           |      _/      _/     _/     _/ |
  | Universitaet der Bundeswehr Muenchen |     _/      _/     _/     _/  |
  | Fakultaet f. Informatik, Institut 2  |    _/_/_/_/_/     _/_/_/_/    |
  | Werner-Heisenberg-Weg 39             |   _/      _/     _/     _/    |
  | D-85577 Neubiberg                    |  _/      _/     _/     _/     |
  | Germany                              | _/      _/ _/  _/_/_/_/  _/   |
  | Phone : ++49-89-6004-3802                               ,,           |

  |   _________________________________________________oOO__()__OOo______|___


What is BDE-Error 6945 and 2024?

Post by Steve Koters » Fri, 08 Mar 1996 04:00:00

Quote:>can anybody tell me, what the BDE-error #6945 and #2024 is?
>Where can I look up such information?

Could not find BDE error codes matching these. What was the error text?
Database type (local, SQL, ODBC)? What operation was attempted that
incurred the error?

EDBEngineError exceptions occur due to problems occuring during a BDE
operation, but can also occur under other conditions, such as a failed ODBC
operation. In those cases, an EDBEngineError exception is still generated,
but the error code and message is passed from the ODBC system through the
BDE to the exception object.

(All replies to the newsgroup, please.)

Also keep in mind that the EDBEngineError exception can consist of more
than one error record. To get the fullest use of the EDBEngineError
exception object, you then need to interrogate *all* the error records.
Here is some information on doing this...

Information that describes the conditions of a database engine error can be
obtained for use by an application through the use of an EDBEngineError
exception. EDBEngineError exceptions are handled in an application through
the use of a try..except construct. When an EDBEngineError exception
occurs, a EDBEngineError object would be created and various fields in that
EDBEngineError object would be used to programmatically determine what went
wrong and thus what needs to be done to correct the situation. Also, more
than one error message may be generated for a given exception. This
requires iterating through the multiple error messages to get needed

The fields that are most pertinent to this context are:

   ErrorCount: type Integer; indicates the number of errors that are in
     the Errors property; counting begins at zero.

   Errors: type TDBError; a set of record-like structures that contain
     information about each specific error generated; each record is
     accessed via an index number of type Integer.

   Errors.ErrorCode: type DBIResult; indicating the BDE error code for the
     error in the current Errors record.

   Errors.Category: type Byte; category of the error referenced by the
     ErrorCode field.

   Errors.SubCode: type Byte; subcode for the value of ErrorCode.

   Errors.NativeError: type LongInt; remote error code returned from the
     server; if zero, the error is not a server error; SQL statement
     return codes appear in this field.

   Errors.Message: type TMessageStr; if the error is a server error, the
     server message for the error in the current Errors record; if not a
     server error, a BDE error message.

In a try..except construct, the EDBEngineError object is created directly
in the except section of the construct. Once created, fields may be
accessed normally, or the object may be passed to another procedure for
inspection of the errors. Passing the EDBEngineError object to a
specialized procedure is preferred for an application to make the process
more modular, reducing the amount of repeated code for parsing the object
for error information. Alternately, a custom component could be created to
serve this purpose, providing a set of functionality that is easily
transported across applications. The example below only demonstrates
creating the DBEngineError object, passing it to a procedure, and parsing
the object to extract error information.

In a try..except construct, the DBEngineError can be created with syntax
such as that below:

  procedure TForm1.Button1Click(Sender: TObject);
    i: Integer;
    if Edit1.Text > ' ' then begin
      Table1.FieldByName('Number').AsInteger := StrToInt(Edit1.Text);
      except on E: EDBEngineError do

In this procedure, an attempt is made to change the value of a field in a
table and then call the Post method of the corresponding TTable component.
Only the attempt to post the change is being trapped in the try..except
construct. If an EDBEngineError occurs, the except section of the construct
is executed, which creates the EDBEngineError object (E) and then passes it
to the procedure ShowError. Note that only an EDBEngineError exception is
being accounted for in this construct. In a real-world situation, this
would likely be accompanied by checking for other types of exceptions.

The procedure ShowError takes the EDBEngineError, passed as a parameter,
and queries the object for contained errors. In this example, information
about the errors are displayed in a TMemo component. Alternately, the
extracted values may never be displayed, but instead used as the basis for
logic branching so the application can react to the errors. The first step
in doing this is to establish the number of errors that actually occurred.
This is the purpose of the ErrorCount property. This property supplies a
value of type Integer that may be used to build a for loop to iterate
through the errors contained in the object. Once the number of errors
actually contained in the object is known, a loop can be used to visit each
existing error (each represented by an Errors property record) and extract
information about each error to be inserted into the TMemo component.

  procedure TForm1.ShowError(AExc: EDBEngineError);
    i: Integer;
    Memo1.Lines.Add('Number of errors: ' + IntToStr(AExc.ErrorCount));
    {Iterate through the Errors records}
    for i := 0 to AExc.ErrorCount - 1 do begin
      Memo1.Lines.Add('Message: ' + AExc.Errors[i].Message);
      Memo1.Lines.Add('   Category: ' +
      Memo1.Lines.Add('   Error Code: ' +
      Memo1.Lines.Add('   SubCode: ' +
      Memo1.Lines.Add('   Native Error: ' +

Steve Koterski                  "Results! Why, man, I have gotten a lot of
Product Group Manager           results. I know several thousand things
Delphi Technical Support        that won't work."
Borland International, Inc.                    -- Thomas Edison, 1847-1931


1. error ORA-01855: AM/A.M. or PM/P.M. required

Our VB 6 program access Oracle database using MS ODBC for Oracle. The
program is trying to run the following SQL stt:
= TO_DATE('04/11/2002 11:10:45 AM','MM/DD/YYYY HH:MI:SS AM')

The Time Format and Date Format setting in Control Panel - Regional Setting
are the following:
Time Format: HH:mm:ss
Date Format: dd/MM/yyyy
For example: 11/04/2002 14:10:10 for April 11, 2002 2:10:10 PM

On a machine that uses MS Odbc for Oracle version 2.573.6019.00 I got an
[Microsoft][ODBC driver for Oracle][Oracle]ORA-01855: AM/A.M. or PM/P.M.
I do not get this error on a machine that uses MS Odbc for Oracle version
2.573.5303.00 or MS Odbc for Oracle version 2.573.7713.00.

Is this a problem with MS Odbc for Oracle version 2.573.6019.00?

Thank you.

2. Pass Recordset as param

3. Application without BDE, but still BDE error?

4. Creator Can't login again ISQL...

5. BDE Error $2104 calling BDE API

6. JOBS! - us-az oracle dba-perf tuning-cap plan $70-75k.txt(1/1)

7. Locking error, DataControl Error, or am I stupid ?

8. BLOB-Field and Upper()

9. Use of @am, Am I dumb?

10. Busy Day = Slowdown from 12 AM - 5 AM

11. I am getting this message when i am tring to export or import anything using

12. What is error $220B (Error initializing the BDE)?

13. What does the BDE Error $2B65 - Operating system network error