Letztens musste ich herausfinden, ob das Design einer Datenbank
Anwendung verborgen ist. Leider gibt es in LotusScript keine Eigenschaft,
die man einfach abfragen könnte. Die Lösung, die schließlich funktioniert
hat, setzt auf DXL.
Der Trick besteht darin, dass ein DXL-Export
einer Datenbank Anwendung mit verborgenem Design nur die
Basisinformationen über die Datenbank Anwendung aber keine
Designelemente enthält. Anschließend muss man nur noch suchen, ob es einen
Eintrag für eine Maske "<form>" gibt. Wenn kein Eintrag
vorhanden ist, ist das Design wohl verborgen. (Abgesehen von Notes Datenbanken
Anwendungen die keine Maske enthalten. Aber die kann man wohl vernachlässigen.)
Function
isDesignHidden(db
As NotesDatabase)
As Boolean
On
Error Goto err_handler
Dim
session As New NotesSession
Dim
DXLExporter As
NotesDXLExporter
Dim
ncl As NotesNoteCollection
Dim
dxlOutput As String
'Input
Set
ncl = db.CreateNoteCollection(False)
ncl.SelectForms
= True
Call
ncl.BuildCollection
Set
DXLExporter = session.CreateDXLExporter
DXLExporter.ExitOnFirstFatalError = True
dxlOutput = DXLExporter.Export(ncl)
If
Instr(1,
dxlOutput, "<form", 1) <> 0 Then
isDesignHidden
= False
Else
isDesignHidden
= True
End
If
Exit
Function
err_handler:
Messagebox
"Upps! There was an error."
& Chr$(10)
& Chr$(10)
& _
"Procedure:
" &
Getthreadinfo(1) &
Chr$(10)
& _
"Error
nr.: " &
Cstr(Err) & "
/ Line: " &
Cstr(Erl) & Chr$(10) &
_
Error, 16, "Error"
Resume
err_resume
err_resume:
End
End Function
Statt das DXL zu parsen, wird einfach
mit Instr gesucht, ob der String "<form" vorhanden ist. Da
mit dem DXL anschließend nicht weiter gearbeitet werden soll, ist dieses
die schnellste Methode.