Um einer bestehenden Anwendung schnell die Möglichkeiten von NotesToPaper zu geben, kann in der Datenbank ein Agent definiert werden, der dann ein Script ausführt, welches die im Report definierten Feldnamen ausliest und die gleichen Feldnamen aus dem Notes-Dokument benutzt. Dieser Agent kann dann z. B. dem Endanwender über ein SmartIcon in der Workstation-Software verfügbar gemacht werden.
Hinweis: Das Script des Agents muss so definiert werden, dass alle Felder dynamisch ausgelesen werden, d .h. in NotesToPaper Setup müssen die gleichen Feldnamen wie in der Notes-Datenbank benutzt werden. Das nachfolgende Script definiert beispielhaft ein solches Script.
Formula: @Command( [ToolsRunMacro] ; "NotesToPaper" )
Script des Agents:
%INCLUDE "NTPDef.SCR"
---------------------------------------------------------------------------------------------------------
Sub Click(Source As Navigator)
Dim StrBuffer As String
Dim FieldBuffer As String
Dim ReportID As Long
Dim session As NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim FieldValue As Variant
Dim FieldList List As String
Dim FieldCount As Long
Dim Counter As Long
Set session =New NotesSession
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
REM Buffer für den ausgewählten Reportnamen initialisieren
StrBuffer = Space(254)
REM Aufruf der Report-Auswahl ( "StrBuffer" enthält danach den gewählten Namen)
If NTPReportList ( StrBuffer ) >= 0 Then
StrBuffer = Trim ( StrBuffer )
REM Anzahl der Felder in der Report-Datei ermitteln
FieldCount = NTPGetFieldCount ( StrBuffer )
REM Alle Feldnamen aus der Report-Datei holen und in einer Liste speichern
For Counter = 1 To FieldCount
FieldBuffer = Space(254)
NTPGetFieldName StrBuffer, Counter, FieldBuffer
FieldBuffer = Trim ( FieldBuffer )
FieldList( FieldBuffer) = FieldBuffer
Next Counter
REM Neuen Report initialisieren und die Report-Nr. merken
ReportID = 0
ReportID = NTPInit ( StrBuffer, 0)
If ReportID >= 0 Then
REM Statusbalken initalisieren (max. Wert übergeben! )
NTPOpenStatusBar ReportID, Collection.Count
REM Alle Dokumente durchlaufen ...
For i = 1 To collection.Count
Set doc = collection.GetNthDocument( i )
Forall x In FieldList
REM Feldinhalt für die Übergabe auslesen
FieldValue = doc.GetItemValue( Listtag(x) )
REM Gelesenes Feld senden
NTPSendField ReportID, FieldValue(0)
End Forall
REM Ende des Datensatzes signalisieren
NTPEndDocument ( ReportID )
REM Statusbalken aktualisieren
NTPUpdateStatusBar ReportID, i
Next
REM Statusbalken schliessen
NTPCloseStatusBar (ReportID)
REM Das Spooling beenden
NTPEnd ( ReportID )
REM Buffer für den ausgewählten Reportnamen initialisieren
StrBuffer = Space(254)
REM Name der erstellten Spool-Datei auslesen
NTPGetDataFileName ReportID, StrBuffer
REM Den erstellten Report ausführen ....
NTPProcessReport Trim ( StrBuffer ), 1, 1, 1, 1
End If
End If
End Sub