combinar correspondencia

combinar correspondencia

Postby Loren » Thu Dec 13, 2012 12:36 pm

Compañeros, buenas tardes:

En mi proyecto, tengo una opción para poder hacer mailing por cartas y para ello se combina el clientes.DBF con un WORD, mediante la clase TWord
El código es el siguiente:
Code: Select all  Expand view
   do while .not. eof()
     if clientes->seleccion=.t.
      copyfile(alltrim(mailing->modelo),camino+'\modelos\temporal.doc',.f.)
      oWord:= TWord():New()
      oWord:openDoc(camino+'\modelos\temporal.doc')
      oWord:Replace( '<NOMBRE>'         , alltrim(CLIENTES->NOMBRE) )
      oWord:Replace( '<DIRECCION>'  , alltrim(CLIENTES->DIRECCION) )
      oWord:Replace( '<POBLACION>'  , alltrim(CLIENTES->POBLACION) )
      oWord:Replace( '<CP>'  , alltrim(str(CLIENTES->CP)) )
      oWord:Replace( '<PROVINCIA>'  , alltrim(CLIENTES->POBLACION) )
      oword:endpage()
      oWord:printDoc()
      oWord:end(.f.)
     endif
     if sel>15  && si los clientes seleccionados son más de 15
      inkey(4)  && hay que hacer tiempo para no colapsar la memoria de la impresora
     endif
     skip
    enddo


Lo hace correctamente, pero el efecto en pantalla NO es el deseado porque abre y cierra el WORD tantas veces como clientes tiene la DBF.
¿Como lo haceis vosotros?

He leido algo por ahí sobre mailmerge (envio de correspondencia) e incluso que la clase viene con ejemplos en Utilidades: http://hyperupload.com/download/018763bc84/Tword.zip.html Pero es imposible descargarselo.

¿Alguien tiene algún ejemplo utilizanzo mailmerge?

Mil gracias.
LORENZO
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: combinar correspondencia

Postby Loren » Thu Dec 13, 2012 3:35 pm

Compañeros, me contesto yo mismo.

Conseguí la solución. Posiblemente no sea la solución más "limpia" pero a mí me funciona y cubre mis necesidades.

Code: Select all  Expand view
   copyfile(alltrim(mailing->modelo),camino+'\modelos\temporal.doc',.f.)
    oWord:= TWord():New()
    oWord:openDoc(camino+'\modelos\temporal.doc')
    do while .not. eof()
     if clientes->seleccion=.t.
      oWord:Replace( '<NOMBRE>'         , alltrim(CLIENTES->NOMBRE) )  
      oWord:Replace( '<DIRECCION>'  , alltrim(CLIENTES->DIRECCION) )    
      oWord:Replace( '<POBLACION>'  , alltrim(CLIENTES->POBLACION) )    
      oWord:Replace( '<CP>'  , alltrim(str(CLIENTES->CP)) )            
      oWord:Replace( '<PROVINCIA>'  , alltrim(CLIENTES->POBLACION) )    
      oWord:printDoc()
      oWord:Replace( alltrim(CLIENTES->NOMBRE), '<NOMBRE>' )
      oWord:Replace( alltrim(CLIENTES->DIRECCION), '<DIRECCION>' )
      oWord:Replace( alltrim(CLIENTES->POBLACION), '<POBLACION>' )
      oWord:Replace( alltrim(str(CLIENTES->CP)),'<CP>' )
      oWord:Replace( alltrim(CLIENTES->POBLACION),'<PROVINCIA>' )
     endif
     skip
    enddo
    oWord:endpage()
    oWord:end(.f.)


Mil gracias a todos.
LORENZO
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: combinar correspondencia

Postby derpipu » Thu Dec 13, 2012 4:47 pm

Hola, yo despues de reemplazar los [campo] con la informacion correspondiente, al final hago un oWord:Undo(50), por decir un numero de Deshacer y con eso te evitarias el paso que haces...

Saludos

LF
Luis Fernando Rubio Rubio
derpipu
 
Posts: 94
Joined: Tue Mar 28, 2006 4:09 pm
Location: Tequila, Jalisco Mexico


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 77 guests