Scopo
Imposta il valore di un parametro presente nel template.
Sintassi
FileMangler.AddParameter(nome parametro, valore parametro)
Argomenti
Nome Parametro | È una stringa che specifica il nome del parametro da impostare. Per ottenere il valore un template di tipo XLS deve contenere NamedRange con questo nome, un template di tipo RTF deve contenere un segnalibro con questo nome ed un template di tipo PDF deve contenere un TextField con questo nome. I nomi devono essere uguali anche come lettere maiuscole/minuscole. |
Valore Parametro | Contiene il valore da impostare nel template. Può essere di qualunque tipo eccetto BLOB. |
Esempio di codice
// *****************************************************************
// Crea il file XLS relativo all'ordine corrente e lo mostra a video
// *****************************************************************
public void Ordini.CreaXLS(
boolean toCSV // Vero per esportare anche un file CSV
optional string MailAddress = "" // Indirizzo di posta elettronica al qu...
)
{
FileMangler fm = new() // Istanzio il componente FileMangler usando la ...
boolean res = 0 //
string CSVFileName = "" //
//
// Aggiungo i valori provenienti dalla query di lookup uno per uno
fm.AddParameter(NomeCliente, Ordini.NomeSocietaClienti.Text)
fm.AddParameter(NomeImpiegato, Ordini.CognomeImpiegati.Text)
//
// Aggiungo i parametri dell'ordine prendendoli dalla riga corrente del
// recordset del pannello Ordini
fm.AddValues(Ordini.Recordset)
//
// Aggiungo i dettagli dell'ordine passando l'intero recordset e il nome del
// named range sul file XLS
fm.AddRecordset(DettagliOrdine, DettagliOrdini.Recordset)
//
// Imposto il componente per l'utilizzo della libreria POI
fm.XLSEngine := POI
//
// Creo un nuovo file XLS partendo dal template, poi lo apro
res := fm.TranslateFile(Path() +c C\ +c FileMangler.xls, Path() +c C\ +c
FileManglerOutput.xls)
//
// Se c'è stato un errore lo segnalo
if res <> ZERO
...
//
// Se devo creo anche su file CSV il recordset dei dettagli ordine
if toCSV
...
//
// Se è stato specificato un indirizzo di posta devo procedere all'invio del
// file via mail
if MailAddress <> Empty String
...
else // Se non devo mandare la mail mostro il file
...
//
// Imposto il file come temporaneo, al termine della sessione corrente sarà
// automaticamente cancellato dal sistema.
EsempiGL.AddTempFile(Path() +c C\ +c FileManglerOutput.xls)
}
// Crea il file XLS relativo all'ordine corrente e lo mostra a video
// *****************************************************************
public void Ordini.CreaXLS(
boolean toCSV // Vero per esportare anche un file CSV
optional string MailAddress = "" // Indirizzo di posta elettronica al qu...
)
{
FileMangler fm = new() // Istanzio il componente FileMangler usando la ...
boolean res = 0 //
string CSVFileName = "" //
//
// Aggiungo i valori provenienti dalla query di lookup uno per uno
fm.AddParameter(NomeCliente, Ordini.NomeSocietaClienti.Text)
fm.AddParameter(NomeImpiegato, Ordini.CognomeImpiegati.Text)
//
// Aggiungo i parametri dell'ordine prendendoli dalla riga corrente del
// recordset del pannello Ordini
fm.AddValues(Ordini.Recordset)
//
// Aggiungo i dettagli dell'ordine passando l'intero recordset e il nome del
// named range sul file XLS
fm.AddRecordset(DettagliOrdine, DettagliOrdini.Recordset)
//
// Imposto il componente per l'utilizzo della libreria POI
fm.XLSEngine := POI
//
// Creo un nuovo file XLS partendo dal template, poi lo apro
res := fm.TranslateFile(Path() +c C\ +c FileMangler.xls, Path() +c C\ +c
FileManglerOutput.xls)
//
// Se c'è stato un errore lo segnalo
if res <> ZERO
...
//
// Se devo creo anche su file CSV il recordset dei dettagli ordine
if toCSV
...
//
// Se è stato specificato un indirizzo di posta devo procedere all'invio del
// file via mail
if MailAddress <> Empty String
...
else // Se non devo mandare la mail mostro il file
...
//
// Imposto il file come temporaneo, al termine della sessione corrente sarà
// automaticamente cancellato dal sistema.
EsempiGL.AddTempFile(Path() +c C\ +c FileManglerOutput.xls)
}
Per far sì che il template riceva il valore del parametro occorre seguire alcune linee guida:
- Nel caso di file Excel (XLS) occorre creare un NamedRange (Intervallo Nominato) il cui nome sia uguale a quello del parametro da sostituire e che sia formato da due celle disposte in verticale. La cella superiore deve contenere il nome del NamedRange, la cella inferiore un valore che identifichi il tipo dei dati contenuti, un numero (ad esempio "0") per campi numerici; una data (ad esempio 01/01/2000) per i campi data, una stringa (ad esempio "a") per tutti gli altri.
- Nel caso di file Word (RTF) occorre creare un segnalibro (contenente almeno un carattere), con nome uguale al nome del parametro da utilizzare.
- Nel caso di file PDF occorre creare un campo TextField (utilizzando per esempio Adobe 8) con nome uguale al nome del parametro da utilizzare. Per avere indicazioni su come creare il template, riferirsi alla documentazione del metodo TranslateFile
- Se il template non contiene il parametro così come specificato sopra, non avverrà alcuna sostituzione, ma non viene dato errore. In questo modo è possibile anche eliminare dal template dati non desiderati da parte degli utenti finali.
- Nella valorizzazione di un parametro di tipo data quando si opera in C# è necessario prestare particolare attenzione, poiché la valorizzazione con una data invalida impedirebbe la stampa del parametro nel file di output.
- Questo componente non è supportato nelle applicazioni offline.
Ultima modifica: 10/01/2023 / Validità: da 6.5.2680