#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 |
|||
|
Copyright © T'sWare All rights reserved |