#338 LDBファイルの中味を調べる方法 VBA

Accessデータベースを開くと、同じファイル名で拡張子が「.LDB」のファイルが同時に生成されます。ここには、そのデータベースを共有するすべてユーザーのロック情報が書き込まれています。
このファイルは全長64バイトの固定長テキストファイルとなっており、次のようなコードを使うことによって、データベースを共有しているユーザーの「コンピュータ名」と「セキュリティ名」を取得することができます。ただし、あるユーザーがデータベースを閉じてもその情報は.LDBから消えないので、実際には"現在のログインユーザー名を調べる"というより、"過去の最大ログインユーザー数を調べる"といった用途になると思います。

Option Compare Database
Option Explicit

Type LDBLockInfo
  ComputerName As String * 32
  SecurityName As String * 32
End Type

Sub GetLDBInfo()

  Dim tLockInfo As LDBLockInfo
  Dim strLDBPath As String
  Dim lngFileNum As Long

  'カレントデータベースのロック情報ファイルのパスを取得
  '(ここでは代わりにリンクテーブルのあるMDBのLDBパスを指定してもよい)
  strLDBPath = Left$(CurrentDb.Name, Len(CurrentDb.Name) - 4) & ".LDB"

  'そのファイルを固定長テキストファイルとして開く
  lngFileNum = FreeFile()
  Open strLDBPath For Random As #lngFileNum Len = Len(tLockInfo)
  'ファイルの全レコードを読み込み
  Do Until EOF(lngFileNum)
    Get #lngFileNum, , tLockInfo
    '取得した情報を出力
    If Len(Replace(tLockInfo.ComputerName, vbNullChar, "", , , vbBinaryCompare)) > 0 Then
      'NULL文字だけから成るデータは除外
      Debug.Print tLockInfo.ComputerName, tLockInfo.SecurityName
    End If
  Loop
  Close #lngFileNum

End Sub
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved