FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour combinar correspondencia
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
combinar correspondencia
Posted: 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 (fw): Select all Collapse
    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
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
Re: combinar correspondencia
Posted: Thu Dec 13, 2012 03: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 (fw): Select all Collapse
    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
Posts: 94
Joined: Tue Mar 28, 2006 04:09 PM
Re: combinar correspondencia
Posted: Thu Dec 13, 2012 04: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

Continue the discussion