Je nach Art der Speicherung der Reportdateien (Report-Layouts) müssen für den Zugriff auf die Layouts unterschiedliche Befehle verwendet werden.
Unterschiede der Befehle
Parameter
Sind die Layouts im Dateisystem gespeichert, so reicht meist die Angabe des Reportnamens, während bei einer Speicherung in der Datenbank zusätzlich der Server- und der Datenbankname angegeben werden müssen.
Name
Beide "Befehlsgruppen" beginnen mit den gleichen Befehlsnamen. Bei den Befehlen, die für den Zugriff auf Reportlayouts in der Datenbank gedacht sind, wurde an den Namen noch die Erweitertung "FromDatabase" (z. B. NTPInitFromDatabase) angehängt. Dadurch ist eine leichte Unterscheidung der Befehle möglich.
Arbeitsweise der Befehle
Die Befehle, die auf Layouts die in dem Dateisystem gespeichert sind zugreifen, erstellen von den vorhandenen Report-Dateien eine Kopie in dem entsprechenden gesetzten temp. Arbeitsverzeichnis.
Die Befehle, die in Datenbanken gespeicherte Layouts benutzen, lösen die dort vorhandenen Dateien unter einem temp. Dateinamen in das gesetzte temp. Verzeichnis des Rechners.
Die so erstellten Dateien werden für den Zugriff auf das Report-Layout und die Erstellung des Reports benutzt. Nach Beendigung der Reportausführung werden diese Dateien wieder entfernt.
Der nachfolgende Auszug (nicht komplett lauffähig) eines Scriptes zeigt die Verwendung von Report-Layouts die in Datenbanken gespeichert sind:
REM Read the environment
Set session =New NotesSession
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
REM Read the settings of the current database
DatabaseName = db.FilePath
ServerName = db.Server
REM Initialize the buffer for the report name
StrBuffer = Space(254)
REM Display the report list ( the report name is returned in "StrBuffer" )
If NTPReportListFromDatabase ( StrBuffer, ServerName, DatabaseName ) >= 0 Then
StrBuffer = Trim ( StrBuffer )
REM Determine the number of fields in the report
FieldCount = NTPGetFieldCountFromDatabase ( StrBuffer, ServerName, DatabaseName )
If ( FieldCount >= 0 ) Then
REM Read all field names from the report and store them in a list
For Counter = 1 To FieldCount
FieldBuffer = Space(254)
Status = NTPGetFieldNameFromDatabase ( StrBuffer, ServerName, DatabaseName, Counter, FieldBuffer )
FieldBuffer = Trim ( FieldBuffer )
FieldList( Counter ) = FieldBuffer
Next Counter
REM Initialize a new report
ReportID = 0
ReportID = NTPInitFromDatabase ( StrBuffer, ServerName, DatabaseName, 0)
If ReportID >= 0 Then
.........