Via a Smart-Icon

 

In order to integrate NotesToPaper quickly into an existing application, an agent can be defined in the database, which can execute a "universal" script in order to give an existing function NotesToPaper capabilities.  This agent can be accessed by the user through a SmartIcon within the workspace software.

 

Note: The agent's script must be defined in such a way, that all fields can be read out dynamically.  This means that in the NotesToPaper Setup, the same field names have to be used as in the Notes-Database.  The following example defines such a script.

 

Formula: @Command( [ToolsRunMacro] ; "NotesToPaper" )      

 

Agent script:

 

%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 Initialize buffer for the selected report name

StrBuffer = Space(254)

   

REM Call the report selection ( "StrBuffer" will then contain the selected name)

If NTPReportList ( StrBuffer ) >= 0 Then

         

StrBuffer = Trim ( StrBuffer )

         

REM Count the number of fields in the report file

FieldCount = NTPGetFieldCount ( StrBuffer )

         

REM  Get all field names from the report file and save as a list

For Counter = 1 To FieldCount

FieldBuffer = Space(254)

NTPGetFieldName StrBuffer, Counter, FieldBuffer

FieldBuffer = Trim ( FieldBuffer )

FieldList( FieldBuffer) = FieldBuffer

Next Counter

         

REM Initialize new report and memorize report number

ReportID = 0

ReportID = NTPInit ( StrBuffer, 0)

         

If ReportID >= 0 Then              

REM Initialize status bar (pass max. value! )

NTPOpenStatusBar ReportID,  Collection.Count

             

REM Run all documents...

For i = 1 To collection.Count

Set doc = collection.GetNthDocument( i )

                   

Forall x In FieldList

REM Read field contents to be passed

FieldValue = doc.GetItemValue( Listtag(x) )

REM Send field read

NTPSendField ReportID, FieldValue(0)

End Forall

                   

REM Signal end of a data set

NTPEndDocument ( ReportID )

                   

REM Refresh status bar

NTPUpdateStatusBar ReportID, i          

Next

             

REM Close status bar

NTPCloseStatusBar (ReportID)

             

REM End spooling

NTPEnd ( ReportID )

             

REM Initialize buffer for the selected report name

StrBuffer = Space(254)

             

REM Read name of the spool file created

NTPGetDataFileName ReportID, StrBuffer

             

REM Execute report created...

NTPProcessReport Trim ( StrBuffer ), 1, 1, 1, 1      

End If

End If

 

End Sub