Scopo
Permette di popolare un'intera area del template con il risultato di una query.
Sintassi
Recordset RS = new() // Recordset contenente i dati da usare
//
FileMangler.AddRecordset(nome tabella, RS)
//
FileMangler.AddRecordset(nome tabella, RS)
Argomenti
Nome Tabella | È una stringa contenente il nome dell'area del template da popolare con i dati del Recordset. Si tratta di un Named Range nel caso di template Excel (XLS), di un Segnalibro nel caso di templare Word (RTF) o in caso di file PDF del nome utilizzato come prima parte del nome dei campi. |
RS | È un oggetto Recordset contenente l'insieme dei dati da utilizzare per popolare l'area del template specificata. |
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 documento template sia formattato correttamente è necessario seguire alcune linee guida:
- Nel caso di file Excel (XLS) occorre creare un NamedRange (Intervallo Nominato) formato da due righe. La riga superiore deve contenere i nomi delle colonne del recordset, la riga inferiore un valore che identifichi il tipo di dato contenuto, un numero (ad esempio 0) per valori numerici, una data (ad esempio 01/01/2000) per le date, una stringa (ad esempio "a") per tutti gli altri.
- Nel caso di file Word (RTF) occorre creare un segnalibro che all'interno contenga tutti i segnalibri che rappresentano i campi del Recordset da inserire nel file di output. Di solito si crea la prima riga di una tabella e la si racchiude in un segnalibro con nome uguale a quello passato alla funzione AddRecordset, poi all'interno della tabella si specificano tanti segnalibri quante sono le informazioni da inserire, usando come nome del segnalibro il nome della colonna del recordset corrispondente.
-
Nel caso di file PDF il formato del nome dei campi che vengono popolati da questo metodo deve essere:
[NomeTabella]_[NomeColonna]_[NumeroRiga]
in cui il Nome Tabella è il primo argomento passato ad AddRecordset, Nome Colonna è il nome della colonna del Recordset ed il numero di riga è il numero di riga del campo (1 per la prima riga).
Perciò per creare una tabella al'interno di un file PDF è necessario creare tutti i TextField della tabella, i cui nomi devono iniziare con il nome della tabella, seguito dal nome della colonna e dal numero della riga. Per una guida alla creazione di un template fare riferimento alla documentazione del metodo Translate File - Si consiglia di leggere il capitolo 6.10 della Guida all'Uso.
- 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 della riga del recordset contenente il campo di output.
- Questo componente non è supportato nelle applicazioni offline.
Ultima modifica: 30/11/2022 / Validità: da 6.5.2680