ACC97: How to Read .LDB Files

This article was previously published under Q186304
This article has been archived. It is offered "as is" and will no longer be updated.
Advanced: Requires expert coding, interoperability, and multiuser skills.

In Microsoft Access 97, the .ldb file is used to determine which recordsare locked in a shared database and by whom. It is created automaticallywhen any user opens a database and deleted when the last user closes thedatabase. While the .ldb file cannot be opened directly for reading,Microsoft provides a dynamic link library that exposes functions that youcan use to read the .ldb file. This article contains sample code for usingthe DLL to read an .ldb file.

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
The dynamic link library Msldbusr.dll contains functions that enable you todo the following:
  • View all computers that have logged into a database since the .ldb file was created.
  • View only computers that are currently logged into a database.
  • View computers that are causing a database file to be corrupted.
  • View the count of computers logged into a database.
Msldbusr.dll is part of the Jetutils.exe file. For more information aboutJetutils.exe or Msldbusr.dll and its usage, please see the followingarticle in the Microsoft Knowledge Base:
176670ACC: Microsoft Jet Utilities Available in Download Center
The following sample Visual Basic for Applications code calls theLDBUser_GetUsers function of Msldbusr.dll to print a list of computerscurrently connected to a database in the Debug window.

After installing Msldbusr.dll to the C:\Windows\System (Microsoft Windows95) or C:\Winnt\System32 (Microsoft Windows NT) folder, follow these stepsto create and use the sample function:
  1. Create a new module in Microsoft Access 97
  2. Type or paste the following function declaration statement into the Declarations section of the module:
          Declare Function LDBUser_GetUsers Lib "MSLDBUSR.DLL" _      (lpszUserBuffer() As String, ByVal lpszFilename As String, _      ByVal nOptions As Long) As Integer					
  3. Type or paste the following sample function into the module:
          Public Function GetUsers(Optional StrDbPath As String)         ReDim lpszUserBuffer(1) As String         Dim intLooper As Integer         Dim Cusers As Long         Dim strMsgBox As String         On Error GoTo Err_GetUsers         ' Check to see if a database path was passed         ' to the function. If the argument was not used,         ' assume that we're to investigate the .ldb         ' of the current database.         If IsMissing(StrDbPath) Or StrDbPath = "" Then              StrDbPath = CurrentDb.Name         End If         ' Set Cusers to the number of computers currently connected         ' to the database. Insert computer information into the         ' lpszUserBuffer array.         ' Arguments of LdbUser_Get Users:         ' 1 =   All users who have logged in since the LDB file was         ' created         ' 2 =   Only users who are currently logged in         ' 4 =   Only users who are causing the database file to be         ' corrupted         ' 8 =   Just return the count of users         Cusers = LDBUser_GetUsers(lpszUserBuffer(), StrDbPath, 2)         ' Print possible errors returned by the function.         Select Case Cusers              Case -1                   strMsgBox = "Can't open the LDB file"              Case -2                   strMsgBox = "No user connected"              Case -3                   strMsgBox = "Can't Create an Array"              Case -4                   strMsgBox = "Can't redimension array"              Case -5                   strMsgBox = "Invalid argument passed"              Case -6                   strMsgBox = "Memory allocation error"              Case -7                   strMsgBox = "Bad index"              Case -8                   strMsgBox = "Out of memory"              Case -9                   strMsgBox = "Invalid Argument"              Case -10                   strMsgBox = "LDB is suspected as corrupted"              Case -11                   strMsgBox = "Invalid argument"              Case -12                   strMsgBox = "Unable to read MDB file"              Case -13                   strMsgBox = "Can't open the MDB file"              Case -14                   strMsgBox = "Can't find the LDB file"         End Select         If Not IsEmpty(strMsgBox) And strMsgBox <> "" Then              MsgBox strMsgBox, vbCritical, "Error"              Exit Function         End If         ' Print computer names to Debug window.         For intLooper = 0 To Cusers - 1              Debug.Print "User"; intLooper + 1; ":"; _              lpszUserBuffer(intLooper)         Next    Exit_GetUsers:         Exit Function    Err_GetUsers:         MsgBox Err.Description         Resume Exit_GetUsers    End Function					
  4. To test this function, type the following line in the Debug window, and then press ENTER:
For more information about Msldbusr.dll, review the Msldbusr.doc file foundin Jetutils.exe.
inf locking

Article ID: 186304 - Last Review: 12/05/2015 08:43:01 - Revision: 4.3

Microsoft Access 97 Standard Edition

  • kbnosurvey kbarchive kbhowto kbprogramming KB186304