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.
|