Page 1 of 2

Sempre a proposito di Rtf e mail merge

PostPosted: Mon Feb 06, 2006 6:05 pm
by Marco Turco
Salve,
una curiosità:
in una mia applicazione effettuo un mail merge di un template RTF con un indirizzario.

Per fare questo ho creato nel testo RTF dei comuni campi di testo XXDATO01XX, XXDATO02XX ecc. che poi vadi a sostituire con i dati dell'indirizzario. In pratica apro il file RTF con Fopen, lo carico in memoria e sostituisco i campi XX.

Quello che vorrei sapere se questo sistema un poco "brutale" che adotto è l'unica soluzione o ci sono soluzioni più sofisticate.
Ho però la necessità di fare un mailmerge indipendentemente dalla presenza di Word quindi non posso utilizzare OLE.

Saluti

Marco

Re: Sempre a proposito di Rtf e mail merge

PostPosted: Mon Feb 06, 2006 7:03 pm
by Enrico Maria Giordano
Personalmente faccio così anche con Word. Credo sia il sistema più versatile e portabile.

EMG

PostPosted: Mon Feb 06, 2006 11:52 pm
by Silvio
pero io sono sicuro esisteva velle versioni antecedenti di fw una classe rtf che aveva un metodo merge ma purtroppo non trovo quella versione ...ne ho trovate altre tra cui dbftortf per esempio ma non quella
Vi parlo della classe di Thomas R. Marchione vi ricordate ?
Questa classe ha per esempio anche la possibilità di creare tabelle con rtf

PostPosted: Tue Feb 07, 2006 8:23 am
by Marco Turco
Te la sto inviando al tuo indirizzo di posta elettronica.
Non l'ho però mai usata e quindi non ti so dare indicazioni sul funzionamento

Ciao

Marco

PostPosted: Tue Feb 07, 2006 8:29 am
by Marco Turco
X Emg:

Bene,
io ho però lo strano problema che ogni tanto il campo mi viene "spezzato" da Word in fase di memorizzazione se l'utente finale modifica il template che gli ho fornito.

In pratica se il mio template riporta originariamente il campo tipo:

\par XXDATO01XX

in alcuni casi Word me lo spezza sul tipo

\par XXDATO01
XX

Dal punto di vista visivo sul documento non ci sono variazioni ma è evidente che così non riesco a sostituire il campo con l'indirizzo perché non trovo il campo.

Devo forse prevedere il campo XXDATO01XX con un nome particolare oppure tra virgolette o altro ?

Marco

PostPosted: Tue Feb 07, 2006 8:36 am
by Enrico Maria Giordano
Probabilmente fai una normale sostituzione di testo invece di utilizzare le API di Word:

Code: Select all  Expand view
FUNCTION WORDREPLACE( oSel, cSrc, cRpl )

    LOCAL lOk

    oSel:Start = 0; oSel:End = -1

    lOk = oSel:Find:Execute( cSrc )

    IF lOk; oSel:Range:Text = cRpl; ENDIF

    RETURN lOk


EMG

PostPosted: Tue Feb 07, 2006 12:23 pm
by fasi
Marco,
quella versione l'ho anch'io ...però esiste un altra versione dove c'era rtfmerge () chge dato un file .rtf e un database ti creava automaticamente il nuovo file con i campi modificati....
Poi se ricordate bene è stata la volta di Tedit e quindi tutti hanno lasciato perdere questo rtf e poi siamo passati al word con ole ....adesso poichè linares ha rifatto la classe Rtf potremmo usare questa , anche se non capisco come mai nel 2002 Linares,Ortis e Pulpon hanno fatto una classe rtf con un Richpad dove cera di tutto e poi adesso nel 20006 Linares ha rifatto una psuda classe rtf senza molte cose rispetto a quella del 2002 come per esempio l'anteprima di stampa a proposito di quest'ultima io ho rifatto l'anteprima grazie ad un fwuser xche mi ha dato la pagina web ... a me serviva una funzione per strasformare il rtf in emf e ci sono riuscito
appena posso ( i tecnici mi devono rimettere la linea telefonica) vi do il source. anche se a me non funzionano i margini e non saprei come settarli ...

PostPosted: Tue Feb 07, 2006 12:25 pm
by fasi
e poi possiamo mettere questa funzione di emg come un methodo Wordreplace() nella classe che vi sembra l'idea ...

PostPosted: Tue Feb 07, 2006 2:05 pm
by Marco Turco
Probabilmente ci sono stati problemi relativi alla proprietà intellettuale dei sorgenti, è per questo motivo che la classe è stata riscritta da Antonio.
Non ho l'ultima versione delle FW ma credo cha Antonio abbia previsto anche il preview del modello rtf in quanto mi sembra abbia implementato metodi aggiuntivi nella classe tprinter proprio per gestire margini ed altro.

Per quanto riguarda l'esempio di Emg, considera che è utilizzabile però solo in presenza di Office installato in quanto opera via Ole.

Marco

PostPosted: Tue Feb 07, 2006 2:12 pm
by Enrico Maria Giordano
Non sai per quanti anni mi sono battuto cercando inutilmente di spiegare quanto fosse meglio utilizzare una tecnica che non richiedesse la presenza di Word o Excel oppure perché sarebbe preferibile un browser diverso da IE o un programma di posta elettronica diverso da OE.

Be', personalmente ho finito di combattere e preferisco sfruttare almeno le caratteristiche positive del nemico. :-)

EMG

PostPosted: Tue Feb 07, 2006 2:18 pm
by Marco Turco
Concordo con la tua analisi.

Il problema è che una percentuale non indifferente dei miei clienti è passata ad OpenOffice 2.0. Sia perché è gratuito (immagina un cliente con una rete di 5-8 computer quanto dovrebbe spendere per licenziare Office) sia perché lo fornisco direttamente sul CD del mio prodotto in modo che sia immediatamente installabile sia ancora perché con un click convertono il documento in PDF senza dover installare un prodotto apposito.

Il problema principale di OpenOffice è il filtro RTF (che è una ciofeca e non gestisce documenti completti con caselle di testo ed immagini) e il supporto OLE che è diverso da quello di Word.

Marco

PostPosted: Tue Feb 07, 2006 2:22 pm
by Enrico Maria Giordano
Marco Turco wrote:sia perché lo fornisco direttamente sul CD del mio prodotto in modo che sia immediatamente installabile


Be', ti sei dato la zappa sui piedi, ora lavora! :-)

EMG

PostPosted: Tue Feb 07, 2006 5:05 pm
by Silvio
Per Marco

La versione attuale di Linares non è prevista di anteprima ....
l'anteprima io l'ho rifatta ma credo che non vada bene perchè è una classe che riprende la classe rpreview , però funziona, ha anche una funzione in c che trsforma il rtf in emf ...però a me sembra una ciofeca anche perchè quando visualizzo il rtf le scritte sono molto vicine alla fine del foglio , insomma non so come settare i margini, tu dici che c'è la funzione ma nella classe rtf di linares o di quella di marchione ?
Sarebbe interessante rifare un .....( lo sparata grossa)....OpenRtfPad fatto con la classe di linares a me sembra un 'idea utile non trovate ...

PostPosted: Tue Feb 07, 2006 5:13 pm
by Silvio

PostPosted: Wed Feb 08, 2006 12:55 pm
by Marco Turco
Per Silvio:

perché non utilizzi per l'anteprima di un documento RTF l'anteprima di Word ? Puoi attiviarla via OLE.

Marco