Über ein Smart-Icon

 

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