Stampa unione: saluto condizionale e invio differenziato
Un'associazione sportiva deve inviare a 480 soci la lettera di rinnovo della quota. I dati stanno in un foglio Calc con le colonne Cognome, Nome, Genere (valori M/F), Email, Quota e DataIscrizione; il documento Writer è di due pagine, con l'intestazione e il logo solo in prima pagina e un piè di pagina che riporta «Pagina X di Y». La lettera inizia con «Gentile Sig.ra Rossi,» per le socie e «Gentile Sig. Rossi,» per i soci. Nella prima stampa unione il saluto risulta sbagliato per 61 persone: il campo condizionale è stato collocato in un paragrafo autonomo e, per i 9 record in cui Genere è vuoto, resta una riga bianca che sfalsa di una riga il blocco dell'indirizzo. Inoltre 37 soci non hanno email: devono ricevere solo la versione cartacea, mentre per gli altri serve anche un PDF individuale da allegare a un messaggio. Il PDF unico generato finora contiene 480 pagine e non è utilizzabile per la spedizione.
1. Il saluto è sbagliato per 61 soci e per 9 lascia una riga vuota. Come va impostato il campo condizionale e perché l'attuale impostazione produce la riga bianca?
Read the worked answer
Il difetto è doppio: il campo condizionale sta in un paragrafo autonomo, quindi quando la condizione è falsa resta il segno di paragrafo e la riga bianca; e la condizione non copre il caso Genere vuoto, che ricade sul ramo «altrimenti».
Prima strada, tutta nel documento: Inserisci > Campo > Altri campi (Ctrl+F2), scheda Funzioni, voce Testo condizionale, con condizione Genere eq "F" → «Gentile Sig.ra », altrimenti «Gentile Sig. ». Per il vuoto serve un secondo campo che precede il primo, con condizione Genere eq "" → «Gentile socio/socia». I campi vanno scritti nello stesso paragrafo del cognome, non in un paragrafo separato: così la riga bianca non nasce.
Seconda strada, più robusta: normalizzare in Calc una colonna «Intestazione» con =SE(GENERE="";"Gentile socio/socia";SE(GENERE="F";"Gentile Sig.ra";"Gentile Sig.")) e usare nel documento un solo campo. Si eliminano le condizioni multiple e l'errore si vede subito sul foglio, ma la colonna va ricalcolata e salvata prima di lanciare la stampa unione, altrimenti si uniscono valori vecchi.
2. Come isolare i 37 soci senza email e come ottenere PDF separati con un nome file riconoscibile?
Read the worked answer
La selezione va fatta nell'origine dati, non nel documento principale: nel foglio si crea una colonna Canale =SE(EMAIL="";"Carta";"Mail") e si preparano due intervalli (o due fogli copiati), uno filtrato su Carta e uno su Mail, da indicare di volta in volta come sorgente della stampa unione. Il documento Writer resta unico, con il solo testo comune; il piè di pagina «Pagina X di Y» continua a funzionare perché il merge produce documenti completi.
Per l'esportazione si usa Strumenti > Stampa unione con uscita su file, che genera un PDF per record: sono 443 file di posta (480 − 37) e 37 stampe cartacee. Il limite da conoscere è il nome: LibreOffice compone nome del documento più indice (lettera_0, lettera_1…), non un campo del database. Se serve «Cognome_Nome.pdf» bisogna rinominare dopo, con una macro Basic che rilegge la colonna di appoggio e rinomina i file nell'ordine di produzione, oppure con uno script esterno. Va previsto anche un controllo di quadratura: numero di PDF prodotti uguale al numero di record con Canale = Mail.