FIX: Cannot Get OLE DB Errors on Japanese Windows 95 and Windows 98 (265885)



The information in this article applies to:

  • Microsoft OLE DB 2.5
  • Microsoft Data Access Components 2.5
  • the operating system: Microsoft Windows 98
  • the operating system: Microsoft Windows 95

This article was previously published under Q265885

SYMPTOMS

When you run an OLE DB or ActiveX Data Objects (ADO) application on Japanese Windows 95 or Japanese Windows 98 with MDAC 2.5 installed, Japanese error messages that are raised by the OLE DB Core Services layer are blank.

When an error in the OLE DB Core Services layer occurs in an application, you may receive only the error number without Japanese error message strings. If the error is from OLE DB Provider itself, you can get Japanese error messages as usual.

This error occurs only on Japanese Windows 95 and Japanese Windows 98, but does not occur on Japanese Windows 98 Second Edition, Microsoft Windows NT 4.0, or Microsoft Windows 2000.

CAUSE

The Win32 FormatMessageA API in Japanese Windows 95 and Japanese Windows 98 does not work correctly with the Unicode message table that is used by OLE DB.

RESOLUTION

A supported fix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Apply it only to computers that are experiencing this specific problem. This fix may receive additional testing. Therefore, if you are not severely affected by this problem, Microsoft recommends that you wait for the next Microsoft Data Access Components service pack that contains this hotfix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the fix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:NOTE: In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The typical support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

The version of this fix should have the following file attributes or later:

   Date      Version      Size             File name   
   -----------------------------------------------------
   5/03/00   2.51.5303.0   483,600 bytes   Oledb32.dll
   5/18/00   2.51.5303.0    57,616 bytes   Oledb32a.dll
				


Installation Procedure

To install the fix, perform the following steps:
  1. Close or stop any applications or services that are using the Microsoft OLE DB components. These may include Microsoft Personal Web Server (PWS), Microsoft Transaction Server (MTS), Microsoft Data Engine (MSDE), and any Microsoft ActiveX Data Objects (ADO) or OLE DB applications.
  2. Download the fix into a temporary folder, and then run it to extract the files listed in the table.
  3. Rename the current version of the Oledb32.dll file. (This file may be located in the Program Files\Common Files\System\Ole db folder.)
  4. Copy the extracted files to the same location.
  5. Restart any services you stopped in step 1.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Steps to Reproduce Behavior

The following ADO code is an example of a situation in which this error will occur. It can also be reproduced with a pure OLE DB application, because the error is in OLE DB, not ADO.
Sub BlankErrMsg()
    On Error GoTo ErrTrap
    Dim conn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim strConnect As String

    'Note that it does not matter which OLE DB provider you use
    strConnect = "PROVIDER=SQLOLEDB;SERVER=myServer;DATABASE=myDatabase;USER ID=myUser;PASSWORD=myPassword;"
    conn.Open strConnect
    
    'Intentionally cause OLE DB errors to occur
    Debug.Print "*** Execute Command without setting CommandText ***"
    Set cmd.ActiveConnection = conn
    cmd.Execute
    
    Debug.Print "*** CommitTrans without BeginTrans ***"
    conn.CommitTrans
    
    Debug.Print "*** BeginTrans, BeginTrans ***"
    conn.BeginTrans
    conn.BeginTrans
    Exit Sub

ErrTrap:
    Dim e As ADODB.Error
    For Each e In conn.Errors
        Debug.Print Hex(e.Number) & " " & e.Description
    Next
    Resume Next
End Sub
				
The code causes the following to be output in the Immediate window:
*** Execute Command without setting CommandText ***
80040E0C 

*** CommitTrans without BeginTrans ***
8004D00E 
*** BeginTrans, BeginTrans ***
8004D013 
				
After the hotfix has been applied, you will see the appropriate error messages output following each error code.

Modification Type:MinorLast Reviewed:10/7/2005
Keywords:kbBug kbfix kbQFE KB265885