Page 1 of 1

ACTUALIZAR DATOS DE DOCUMENTO DE WORD DINAMICAMENTE

Posted: Thu Oct 29, 2015 4:13 pm
by joseluisysturiz
Saludos, necesito tener un documento de WORD, llamemosle una plantilla con un escrito predeterminado, tipo contrato, pero que debo usar desde mi aplicacion y al imprimirla ciertos datos seran diferentes dependiendo de los datos del cliente que se le imprima el contrato o documento de word.
Alguna idea, sugerencia, recomendacion y ejemplo de como usar word con plantilla y macros desde FW.? gracias, saludos... :shock:

Re: ACTUALIZAR DATOS DE DOCUMENTO DE WORD DINAMICAMENTE

Posted: Thu Oct 29, 2015 5:27 pm
by acuellar
José Luis

Guarda tu plantilla en .rtf (Formato texto) si usas MySql guardarlo en texto en un campo TEXT o MEDIUMTEXT
Los lugares que queres cambiar coloca entre corchetes así:

Trabaja en [TRABAJO]

El programa para el llenado:

Code: Select all

cTrab:="INFORMATICA"

//Luego abrir la plantilla

cTxtFile:=STRTRAN(cTxtFile, "[TRABAJO]",cTrab)

 
Saludos,

Adhemar

Re: ACTUALIZAR DATOS DE DOCUMENTO DE WORD DINAMICAMENTE

Posted: Thu Oct 29, 2015 5:50 pm
by joseluisysturiz
acuellar wrote:José Luis

Guarda tu plantilla en .rtf (Formato texto) si usas MySql guardarlo en texto en un campo TEXT o MEDIUMTEXT
Los lugares que queres cambiar coloca entre corchetes así:

Trabaja en [TRABAJO]

El programa para el llenado:

Code: Select all

cTrab:="INFORMATICA"

//Luego abrir la plantilla

cTxtFile:=STRTRAN(cTxtFile, "[TRABAJO]",cTrab)

 
Saludos,

Adhemar
Adhemar gracias por responder, mi duda es la siguiente, el documento debe estar accesible al cliente ya que cuando el quiera puede cambiar partes, agregar, modificar o quitar, como por ejemplo una Clausula, en este caso es un contrato, tendras un ejemplo mas completo.? gracias, saludos...

Re: ACTUALIZAR DATOS DE DOCUMENTO DE WORD DINAMICAMENTE

Posted: Thu Oct 29, 2015 5:52 pm
by acuellar
Entonces sólo tiene que guardarlo en .rtf y lo pueden modificar con WORD cuando sea necesario.

Saludos,

Adhemar

Re: ACTUALIZAR DATOS DE DOCUMENTO DE WORD DINAMICAMENTE

Posted: Thu Oct 29, 2015 5:59 pm
by joseluisysturiz
acuellar wrote:Entonces sólo tiene que guardarlo en .rtf y lo pueden modificar con WORD cuando sea necesario.

Saludos,

Adhemar
Ok, y en mi documento RTF coloco entre corchetes los "campos" que van hacer dinamicos.?, buscare temas de como abrir, usar word y pasarle los valores a la plantilla RTF, gracias, saludos...

Re: ACTUALIZAR DATOS DE DOCUMENTO DE WORD DINAMICAMENTE

Posted: Fri Oct 30, 2015 7:25 am
by Loren
Joseluissystruiz, buenos días:

Si utilizas DBF-CDX como yo, puedes hacer uso de la clase TWord. Yo hago así:

El usuario crea sus propios diseño de WORD y _ a reemplazar tiene que escribirlos mediante "Corchetes". Así de esa manera, la case TWord los identifica y los sustituye por _ DBF. Así, de un Word de 1 página te imprime un Word de tantas páginas como registros en la DBF tengas.

Un ejemplo

Code: Select all

    TRY
    oWord:= TWord():New()
    oWord:openDoc(camino+'\modelos\temporal.doc')
    do while .not. eof()
     if clie->seleccion=.t.
      oWord:Replace( '<NOMBRE>' , alltrim(clie->NOMBREc) )    ;    oWord:Replace( '< NOMBRE >' , alltrim(clie->NOMBREc) )
      oWord:Replace( '<DIRECCION>', alltrim(clie->DIRECCc) )     ;    oWord:Replace( '< DIRECCION >', alltrim(clie->DIRECCc) )
      oWord:Replace( '<POBLACION>', alltrim(clie->POBLAC) )     ;    oWord:Replace( '< POBLACION >', alltrim(clie->POBLAC) )
      oWord:printDoc()
      oWord:Replace( alltrim(clie->NOMBREc), '<NOMBRE>' )
      oWord:Replace( alltrim(clie->DIRECCc), '<DIRECCION>' )
      oWord:Replace( alltrim(clie->POBLAC), '<POBLACION>' )
     endif
     skip
    enddo
    oWord:endpage()
    oWord:end(.f.)
 
Un saludo.
LORENZO.

Re: ACTUALIZAR DATOS DE DOCUMENTO DE WORD DINAMICAMENTE

Posted: Fri Oct 30, 2015 9:22 pm
by joseluisysturiz
Lorenzo, muchas gracias por tu ejemplo, es lo que necesitaba, uso MySql pero imagino no deberia ser problema, ya que le mando los nombres de _ igual como lo haces con DBF, hago las pruebas y te comento, es lo que queria ver, como reemplazar los valores entre los corchetes [], saludos...gracias... :shock: