Data ultimo aggiornamento: 13/06/2012

Clicca per accedere al sito di NTS Informatica
Clicca per accedere all'argomento Clicca per accedere all'argomento Clicca per accedere all'argomento Clicca per accedere all'argomento
Clicca per accedere al sito di NTS Informatica

Funzionalità di scripting nella personalizzazione delle stampe da registro

Sui programmi Gestione ordini e Gestione documenti è presente una funzione che consente di personalizzare in modo estremamente efficace le funzionalità di stampa offerte da Business: è possibile condizionare alcuni elementi della stampa (la scelta se stampare o meno il report, il nome del file di report, la stampante da utilizzare, il numero di copie, ...) in base a elementi presenti nella finestra che ha lanciato la stampa come ad esempio il cod. del cliente, il codice tipo bolla fattura.

Questo si ottiene attraverso degli script (in formato VBScript) inseriti all'interno del Registro di Business in apposite proprietà. Per utilizzare queste funzionalità e dunque indispensabile conoscere il linguaggio VBScript e i nomi degli oggetti contenuti nelle finestre che si vogliono utilizzare per condizionare le stampe.

Allo scopo sono state inserite alcune proprietà del Registro di Business come sotto indicato:

Proprietà della cartella Reportsn (ad esempio \Bsveboll\Reports1):

Proprietà Scripting: è una proprietà che può valere 0 (default) o -1; se l'opzione è abilitata (valore -1) sono attive le funzionalità di scripting su questo/i report inseriti nelle cartelle sottostanti (\Rep1-\Rep10)

Proprietà della cartella Reportsn\Repn (ad esempio \Bsveboll\Reports1\Rep1):

Proprietà ReportSelectedCond: è una proprietà all'interno della quale va indicata, come stringa, una funzione VBScript che deve restituire True o False a seconda del fatto che il report debba essere preselezionato o meno. La presenza di questa proprietà rende inoperante la proprietà ReportSelected a valore fisso. Il modello della funzione da utilizzare è il seguente:

  Function ReportSelectedCond()
    ReportSelectedCond = vDefault
  End Function

All'interno della funzione il valore predefinito vDefault ha valore True. A seguire viene riportato un esempio di utilizzo di questa funzione che risolve questa problematica: si ha la necessità di stampare il report (personalizzato in \Bsveboll\Reports1\Rep1) solo se all'interno del documento è presente almeno un articolo di cod. marca 15:

  Function ReportSelectedCond()
    Dim strSQL, snaTest
    ReportSelectedCond = False
    strSQL = "SELECT Count(*) " & _
             "FROM movmag INNER JOIN artico " & _
             "ON movmag.mm_codart = artico.ar_codart " & _
             "WHERE mm_tipork = '" & fmOwner.strTmTipork & "' " & _
             "AND mm_anno = " & fmOwner.nTmAnno & " " & _
             "AND mm_serie = '" & fmOwner.strTmSerie & "' " & _
             "AND mm_numdoc = " & fmOwner.lTmNumdoc & " " & _
             "AND ar_codmarc = 15"
    If gstrSubDataType = "(Nessuno)" Then
      Set snaTest = gdb.OpenRecordset(strSQL, 4)
    Else
      Set snaTest = gcn.OpenRecordset(strSQL, 4)
    End If
    If Not snaTest.EOF Then
      If Not IsNull(snaTest(0)) Then
        If snaTest(0) > 0 Then ReportSelectedCond = True 
      End if
    End If
    snaTest.Close
    Set snaTest = Nothing
  End Function

Proprietà PrinterNameCond: è una proprietà all'interno della quale va indicata, come stringa, una funzione VBScript che deve restituire il nome della stampante su cui effettuare la stampa del report corrente. La presenza di questa proprietà rende inoperante la proprietà PrinterName a valore fisso. Il modello della funzione da utilizzare è il seguente:

  Function PrinterNameCond()
    PrinterNameCond = vDefault
  End Function

All'interno della funzione il valore predefinito vDefault assume il valore "" (stringa vuota) che indica l'utilizzo della stampante predefinita di Business. A seguire viene riportato un esempio di utilizzo di questa funzione che risolve questa problematica: si ha la necessità di stampare il report (personalizzato in \Bsveboll\Reports1\Rep1) sulla stampante di nome StampanteA se il codice tipo bolla/fattura del documento è 1, StampanteB se il codice tipo bolla/fattura del documento è 2, la stampante predefinita di Business in tutti gli altri casi:

  Function PrinterNameCond()
    Select Case CInt(fmOwner.edTipobf.Text)
      Case 1
        PrinterNameCond = "StampanteA"
      Case 2
        PrinterNameCond = "StampanteB"
      Case Else
        PrinterNameCond = vDefault
    End Select
  End Function

Proprietà ReportNameCond: è una proprietà all'interno della quale va indicata, come stringa, una funzione VBScript che deve restituire il nome del report, estensione inclusa, da utilizzare per effettuare la stampa. La presenza di questa proprietà rende inoperante la proprietà ReportName a valore fisso. Il modello della funzione da utilizzare è il seguente:

  Function ReportNameCond()
    ReportNameCond = vDefault
  End Function

All'interno della funzione il valore predefinito vDefault rappresenta il nome del report predefinito (con nIndex uguale a 1), assume il valore "" (stringa vuota) negli altri casi. A seguire viene riportato un esempio di utilizzo di questa funzione che risolve questa problematica: si ha la necessità di stampare il report (personalizzato in \Bsveboll\Reports1\Rep1) di nome ReportA.rpt se il vettore del documento è 1, ReportB.rpt se il vettore del documento è 2, il report predefinito in tutti gli altri casi:

  Function ReportNameCond()
    Select Case CInt(fmOwner.edVettor.Text)
      Case 1
        ReportNameCond = "ReportA.rpt"
      Case 2
        ReportNameCond = "ReportB.rpt"
      Case Else
        ReportNameCond = vDefault
    End Select
  End Function

Proprietà CopiesCond: è una proprietà all'interno della quale va indicata, come stringa, una funzione VBScript che deve restituire un numero intero che rappresenta le copie da stampare. La presenza di questa proprietà rende inoperante la proprietà Copies a valore fisso. Il modello della funzione da utilizzare è il seguente:

  Function CopiesCond()
    CopiesCond = vDefault
  End Function

All'interno della funzione il valore predefinito vDefault vale zero e indica l'utilizzo del numero di copie relative alla stampa predefinita in Business. A seguire viene riportato un esempio di utilizzo di questa funzione che risolve questa problematica: si ha la necessità di 4 copie del report in presenza del vettore del documento altrimenti 3 copie:

  Function CopiesCond()
    If CInt(fmOwner.edVettor.Text) > 0 Then
      CopiesCond = 4
    Else
      CopiesCond = 3
    End If
  End Function

Proprietà ScriptPrint: è una proprietà all'interno della quale va indicata, come stringa, una funzione VBScript che deve restituire True o False a seconda si voglia o meno annullare il processo di stampa corrente. All'interno della funzione è possibile eseguire qualsiasi tipo di operazione. Il modello della funzione da utilizzare è il seguente:

  Function ScriptPrint()
    ScriptPrint = True
  End Function

All'interno della funzione NON è disponibile la variabile vDefault. è disponibile invece la variabile nCRPEJob che contiene il job di stampa corrente. A seguire viene riportato un esempio di utilizzo di questa funzione che risolve questa problematica: si ha la necessità di chiedere ulteriore conferma della stampa quando il codice agente del documento è 999:

  Function ScriptPrint()
    ScriptPrint = True
    If CInt(fmOwner.edCodagen.Text) = 999 Then
      If MsgBox("Confermare la stampa di documenti con agente 999?", vbQuestion + vbYes, "Conferma stampa") = vbNo Then
        ScriptPrint = False
      End If  
    End If
  End Function

Variabili utilizzabili negli script

Le variabili sotto indicate sono utilizzabili all'interno degli script, ossia sono predichiarate:

  • gstrDir: una stringa contenente il percorso dove è presente il database dell'azienda;
  • gstrRptDir: una stringa contenente il percorso dove sono presenti i report di Business;
  • gstrOfficeDir: una stringa contenente il percorso dove sono contenuti i file di Microsoft Office;
  • gstrPrcDir: una stringa contenente il percorso del database di procedura (ARCPROC) di Business;
  • gstrCmdDir: una stringa contenente il percorso del database di servizio COMBO;
  • gstrPrcConnect: una stringa contenente la stringa di connessione al database di procedura;
  • gstrPrcDataType: una stringa contenente il tipo di database di procedura (solitamente "Access");
  • gstrPrcSubDataType: una stringa contenente il sottotipo del database di procedura ARCPROC;
  • gstrPrcExt: una stringa contenente l'estensione dell'archivio procedura, normalmente .MDB;
  • gstrPrcPrefix: una stringa contenente il prefisso delle tabelle dell'archivio procedura aperto;
  • gstrCmbDataType: una stringa contenente il tipo di database COMBO;
  • gstrCmbSubDataType: una stringa contenente il sottotipo del database COMBO;
  • gstrCmbExt: una stringa contenente l'estensione dell'archivio COMBO, normalmente .MDB;
  • gstrCmbPrefix: una stringa contenente il prefisso delle tabelle dell'archivio COMBO, normalmente vuota;
  • gstrCmbConnect: una stringa contenente la stringa di connessione al database COMBO, normalmente vuota;
  • gstrOpNome: una stringa contenete il nome dell'operatore che è entrato in Business;
  • gstrPasswd: una stringa contenete la password d'ingresso dell'operatore;
  • gstrCodazi: una stringa contenente il codice dell'azienda correntemente aperta;
  • gstrExt: una stringa contenente l'estensione del database dell'azienda aperta, normalmente .MDB;
  • gstrPrefix: una stringa contenente il prefisso delle tabelle dell'azienda aperta;
  • gstrConnect: una stringa contenente la stringa di connessione per accedere al database dell'azienda;
  • gstrDataType: una stringa contenente il tipo di database dell'azienda corrente;
  • gstrSubDataType: una stringa contenente il sottotipo del database dell'azienda aperta;
  • gstrDirCodazi: una stringa che assume i valore "LIT" o "EUR" che indica quale unità di conto monetaria è corrente nell'azienda aperta (Lire italiane o Euro);
  • gdbCmb: è una variabile oggetto di tipo DAO.Database che referenzia il database aperto COMBO;
  • gdbAP: è una variabile oggetto di tipo DAO.Database che referenzia il database procedura aperto ARCPROC;
  • gcnAP: è una variabile oggetto di tipo DAO.Connection che referenzia la connessione eventualmente aperta al database procedura ARCPROC, è impostata solamente se la variabile gstrPrcSubDatatype è diversa da "(Nessuno)";
  • gdb: è una variabile oggetto di tipo DAO.Database che referenzia il database dell'azienda aperto;
  • gcn: è una variabile oggetto di tipo DAO.Connection che referenzia la connessione eventualmente aperta al database dell'azienda, è impostata solamente se la variabile gstrSubDatatype è diversa da "(Nessuno)";
  • objStd: è una variabile oggetto di tipo BS—STD.CLS—STD che referenzia l'oggetto di Business contenete tutte le più comuni proprietà e metodi utilizzati dal programma;
  • fmOwner: rappresenta una variabile che referenzia la finestra chiamante che ha lanciato la stampa: ad esempio se all'interno dello script si deve testare il contenuto del campo Codice tipo bolla/fattura si dovrà indicare fmOwner.edTipobf.Text;
  • strKey1: è una stringa che rappresenta il nome della cartella di primo livello dove si è fatta la personalizzazione da registro; ad esempio per quanto riguarda \Bsveboll\Reports1\Rep1 strKey1 rappresenta la stringa "Bsveboll";
  • strKey2: è una stringa che rappresenta il nome della cartella di secondo livello dove si è fatta la personalizzazione da registro; ad esempio per quanto riguarda \Bsveboll\Reports1\Rep1 strKey2 rappresenta la stringa "Reports1";
  • nIndex: è un numero intero che rappresenta l'indice del report all'interno della struttura multireport, fatta attraverso la personalizzazione delle stampe da registro; ad esempio, per quanto riguarda \Bsveboll\Reports1\Rep1, nIndex vale 1, per quanto riguarda \Bsveboll\Reports1\Rep3 nIndex vale 3;
  • strTipoDoc: è una stringa di un byte che contiene il tipo di documento a cui e riferita la personalizzazione delle stampe, sempre che sia applicabile per il programma;
  • vDefault: è una variabile di tipo variant che contiene il valore predefinito della funzione: il suo contenuto varia a seconda della proprietà che si va a condizionare.
Clicca per accedere al sito di NTS Informatica