Erstellungsdatum einer Datenbank anhand der ReplicaID berechnen

Mein aktuelles Projekt dreht sich um die Inventarisierung von Lotus Notes Datenbanken im Zuge der Migration nach Sharepoint. Dabei sollte eine Übersicht der echten Erstellungsdaten der Datenbanken generiert werden. Das, was man normalerweise im Properties-Dialog sieht, sind ja die Daten für den aktuellen Server, hilft also nicht direkt weiter.

Aber es gibt eine eigentlich recht simple Lösung. Notes speichert der Erstelldatum in der ReplicaID der Datenbank, wie man bspw. hier nachlesen kann. Also muss die Information nur noch extrahiert werden und das geht ganz gut mit einem API-Call, nämlich ConvertTIMEDATEToText.

Die gesamte Funktion inklusive Deklarationen sieht dann so aus:

Type TIMEDATE
	Innards(0 To 1) As Long
End Type
 
Declare Function ConvertTIMEDATEToText Lib "nnotes.dll" (ByVal IntlFormat As Integer, _
ByVal TimeFormat As Integer, InputTime As TIMEDATE, ByVal retTextBuffer As String, _
ByVal TextBufferLength As Integer, retTextLength As Integer) As Integer
 
%REM
	Function calculateCreationDate
	Description: Berechnet aus der Replika-ID der Datenbank das Erstelldatum
%END REM
Public Function calculateDBCreationDate(strReplicaID As String) As NotesDateTime
	Dim apiTime As TIMEDATE
	Dim session As New NotesSession
	Dim retStr As String * 81
	Dim retLen As Integer
	Dim retCode As Integer
	Dim datResult As NotesDateTime
	Dim strDate As String
 
	apiTime.Innards(0) = Val("&H" & Right(strReplicaID, 8) & "L")
	apiTime.Innards(1) = Val("&H" & Left(strReplicaID, 8) & "L")
 
	retCode = ConvertTIMEDATEToText(0, 0, apiTime, retStr, Len(retStr)-1, retLen)
 
	strDate = Left$(retStr, retLen)
	Set datResult = New NotesDateTime(strDate)
 
	Set calculateDBCreationDate = datResult
End Function
Waidner IT Solutions