FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Clase TWord
Posts: 133
Joined: Fri Nov 30, 2007 11:34 AM
Clase TWord
Posted: Tue Nov 04, 2008 11:29 AM

He bajado el PRG de la clase Tword pero no localizo los ejemplos ni la ayuda de la misma.

Me pueden decir donde encontrarlo.

Un saludo.

Saludos. Fernando
Posts: 133
Joined: Fri Nov 30, 2007 11:34 AM
Clase TWord
Posted: Thu Nov 06, 2008 07:10 PM
Una pregunta.

En el documento Word que se utilizará como primario para el merge, los campos a reemplazar en ese documento ¿como se colocan el el docuemnto? ¿Son campos Word? ¿Se colocan nombres de campos con algún caracter?.

Muchas gracias.
Saludos. Fernando
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Clase TWord
Posted: Thu Nov 06, 2008 07:24 PM
Hola Fernando:

Te pongo un trozo de código que, espero, te ayudará:

................
      oWord := Tword():New()
      oWord:OpenDoc(cRutaDoc)
      //
      IF lPreWord
          oWord:Visualizar()
      ENDIF
      //
      oWord:Replace("[TRATAMIENTO]",cTratami)
      oWord:Replace("[NUMEROSOCIO]",cNumSocio)
      oWord:Replace("[NOMBRE]",cNombre)
      oWord:Replace("[DOMICILIO]",cDomicilio)
      oWord:Replace("[CPOSTALYLOCALIDAD]",cCLP)
      //
      IF lPreWord
         oWord:Visualizar()
      ENDIF
      //
      oWord:PrintDoc()
      oWord:End(.F.)
.............


Como puedes observar los campos que van en el documento se encierran entre corchetes, aunque puedes utiliza cualquier otro símbolo.
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 133
Joined: Fri Nov 30, 2007 11:34 AM
Clase TWord
Posted: Thu Nov 06, 2008 07:47 PM
Manuel Aranda wrote:Hola Fernando:

Te pongo un trozo de código que, espero, te ayudará:

................
      oWord := Tword():New()
      oWord:OpenDoc(cRutaDoc)
      //
      IF lPreWord
          oWord:Visualizar()
      ENDIF
      //
      oWord:Replace("[TRATAMIENTO]",cTratami)
      oWord:Replace("[NUMEROSOCIO]",cNumSocio)
      oWord:Replace("[NOMBRE]",cNombre)
      oWord:Replace("[DOMICILIO]",cDomicilio)
      oWord:Replace("[CPOSTALYLOCALIDAD]",cCLP)
      //
      IF lPreWord
         oWord:Visualizar()
      ENDIF
      //
      oWord:PrintDoc()
      oWord:End(.F.)
.............


Como puedes observar los campos que van en el documento se encierran entre corchetes, aunque puedes utiliza cualquier otro símbolo.


Gracias Manuel.

El código ya lo tenía de un problema que tenías tu. La duda era´sobre el documento de word que utilizaré como primario para combinar. Entiendo que puedo colocar cualquier llamada, ya que será lo que se invoque con Replace.

Un saludo. Fernando
Saludos. Fernando
Posts: 215
Joined: Fri Feb 02, 2007 03:38 PM
asi uso tword
Posted: Thu Nov 06, 2008 11:14 PM

Fernando, el codigo a continuacion es como imprimo desde un sistema constancias salariales, tengo un documento primario en word creado preliminarmente dejando entre corchetes los campos a reemplazar y desde ahi lo tomo como plantilla ,

local oWord,oFont1,oFont2,mdoc
local afondo := {nRGB(255,0,0), nRGB(255,255,255), ,2,4}
local alinea := {5},mTexto,mTexto1,mTexto2,mTexto3,mTexto4,mTexto5,otxt,otxt1
local oTxt2,oTxt3,cMes1,cNommes

mTexto := "("+CONVERTIR(mSaldo1,"Cordobas")+")"
mTexto1 := "("+CONVERTIR(mDesde,"Cordobas")+")"
mTexto2 := "("+CONVERTIR(mHasta,"Cordobas")+")"

cMes1 := date()
cNommes := FAN(@cMes1,cNommes)

oWord:= Tword():New

DEFINE FONT oFont1 NAME "Arial" SIZE 0,-12 BOLD ITALIC UNDERLINE of oWord
DEFINE FONT oFont2 NAME "Tahoma" SIZE 0,-12 ITALIC of oWord

/
este esl documento primario donde tengo entre corchetes los campos a reemplazar
/

oWord:OpenDoc("C:\DATA1\SALARIO1.DOC")
oWord:SetCm()

oWord:Replace([Nombre1],mCodigo+"-"+mNombre)
oWord:replace([Fing],mCarrera)
oWord:replace([Mcargo],mCargo)
oWord:replace([Msalario],mSaldo)
oWord:replace([Mletras],mTexto)
oWord:replace([Mdesde],mDesde)
oWord:replace([Mletra1],mTexto1)
oWord:replace([Mhasta],mHasta)
oWord:replace([Mletra2],mTexto2)
oWord:replace([Mfecha],cNommes)

//oWord:Preview()

/
Despues del reemplazo de los campor salvo mi documento con otro nombre y mi plantilla queda sin alteraciones
/

oWord:Save("PRUEBA.DOC")
oWord:PrintDoc(,,,,,,,,,) // imprimo el documento sin o con vista previa

oWord:End()
oFont1:End()

RETURN NIL

Ojala te sea de alguna utilidad

Saludes desde Managua, Nicaragua

Ramon Paredes

... Desde la Tierra de lagos y Volcanes......
Posts: 133
Joined: Fri Nov 30, 2007 11:34 AM
Clase TWord
Posted: Fri Nov 07, 2008 07:40 AM

Ramón.

Muchas gracias por tu contestación. Probaré

Un saludo.

Saludos. Fernando
Posts: 133
Joined: Fri Nov 30, 2007 11:34 AM
Clase TWord
Posted: Fri Nov 07, 2008 07:07 PM

Buenas tardes.

Tras realizar un pequeño ejemplo, en tiempo de ejecución tengo un error.

Application

Path and name: d:\personal\perito32\perito3.Exe (32 bits)
Size: 667,648 bytes
Time from start: 0 hours 0 mins 45 secs
Error occurred at: 07-11-2008, 20:01:47
Error description: Error BASE/1004 No existe el m‚todo: GET
Args:
[ 1] = U
[ 2] = C MailMerge

Stack Calls

Called from: source\rtl\tget.prg => GET(0)
Called from: => TWORD:OPENDOC(434)
Called from: d:\personal\perito32\Prg\facturas.prg => IMPRIME_FACTURA(269)
Called from: d:\personal\perito32\Prg\verfactura.prg => VERFACTURA(200)
Called from: d:\personal\perito32\Prg\facturas.prg => (b)FACTURA(72)
Called from: => TBUTTON:CLICK(0)
Called from: => TBUTTON:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => SENDMESSAGE(0)
Called from: => TDIALOG:COMMAND(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: => TDIALOG:HANDLEEVENT(0)
Called from: => DIALOGBOXINDIRECT(0)
Called from: => TDIALOG:ACTIVATE(0)
Called from: d:\personal\perito32\Prg\facturas.prg => FACTURA(81)
Called from: d:\personal\perito32\Prg\perito32.prg => (b)BUILDMENU(117)
Called from: => TMENU:COMMAND(0)
Called from: => TWINDOW:COMMAND(0)
Called from: => TMDIFRAME:COMMAND(0)
Called from: => TMDIFRAME:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: => TMDIFRAME:ACTIVATE(0)
Called from: d:\personal\perito32\Prg\perito32.prg => MAIN(96)

Me imagino que debe ser un problema de enlazado, ya que he compilado y enlazado directamente el archivo Tword.prg.

Una ayuda, por favor.

Saludos

Saludos. Fernando
Posts: 215
Joined: Fri Feb 02, 2007 03:38 PM
un trozo de codigo
Posted: Fri Nov 07, 2008 08:51 PM

Fernando,

Si pusieses un trozo de codigo donde se origina el error te podriamos echar una mano,

Saludes desde Managua, Nicaragua

Ramon Paredes

... Desde la Tierra de lagos y Volcanes......
Posts: 133
Joined: Fri Nov 30, 2007 11:34 AM
Re: un trozo de codigo
Posted: Sat Nov 08, 2008 11:07 AM
Ramon Paredes wrote:Fernando,

Si pusieses un trozo de codigo donde se origina el error te podriamos echar una mano,

Saludes desde Managua, Nicaragua

Ramon Paredes


Muchas gracias por responder Ramón.

Como verás el código no puede ser mas simple. Creo, por lo que he leido en los foros, que para crear la librería Tword se debe enlazar la librería de Harbour hbwin32 ya que se precisa la clase Toleauto. He intentado localizarla pero no le he conseguido.

Como ya indicaba, utilizo directamente el código Twordhb.PRG, que compilo y enlazo con el resto de los PRG,s de la aplicación.


Un saludo Desde Zaragoza (España).
Saludos. Fernando
Posts: 133
Joined: Fri Nov 30, 2007 11:34 AM
Clase TWord
Posted: Sun Nov 09, 2008 05:50 PM
Perdona Ramón por no incluir el código. Ahí va:


Function Imprime_Factura(aDatos)

LOCAL oWord

oWord:=Tword():New()
oWord:OpenDoc("c:\Usuarios\Fernando\Documentos\Facturas CEFER.DOC")
oWord:Replace("[fecha]", aDatos[6])
oWord:Replace("[factura]",aDatos[5])
oWord:Preview()
oWord:End(.F.)
Return(aDatos)


Como verás se trata de una prueba sencilla. Como ya indicaba creo que l problema es el enlazado ya que me temo que me falta incluir un libreria de harbour.

Ya me contarán.

Un saludo.
Saludos. Fernando
Posts: 133
Joined: Fri Nov 30, 2007 11:34 AM
Clase TWord
Posted: Tue Nov 11, 2008 10:34 AM

Pueden ayudarme.

Muchas gracias.

Saludos. Fernando
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Clase TWord
Posted: Thu Nov 13, 2008 10:51 PM

Se solucionó el tema que esta clase (word) que funcione tanto para Word 2003 como para el 2007,

Salen tabulado de distinta forma de una versión a la otra.

gracias

David
argentina

Posts: 133
Joined: Fri Nov 30, 2007 11:34 AM
Clase TWord
Posted: Fri Nov 14, 2008 08:14 AM
dobfivewin wrote:Se solucionó el tema que esta clase (word) que funcione tanto para Word 2003 como para el 2007,

Salen tabulado de distinta forma de una versión a la otra.

gracias

David
argentina


David no entiendo qué me quierres decir, ya que no me funciona de ninguna forma, me da error antes de abrir el documento.

Un saludo.
Saludos. Fernando
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Clase TWord
Posted: Fri Nov 14, 2008 04:03 PM
Disculpas, pensé que ya habias solucionado. Te voy a pasar como lo manejo yo, y que está funcionando.

El problema que tengo que mi aplicación cuando GENERA el documento sale tabulado de distinta forma, en la maquina que se ejecuta el programa, si tengo Ofiice 2003 y 2007.

DE ESTA FORMA YO GENERO EL DOCUMENTO DESDE MI APLICACION

oWord:=Tword():New()
oWord:NewDoc( cOutFile )
oWord:startpage()
oWord:SetCm()
oWord:TextBox(1 ,;
                  2.0   ,;
                  25    ,;
                  20.3  ,;
	          'PRUEBA GENERACION DE DOCUMENTO WORD,;
	          oFuente5, , , Justi,  ,{0},.t.)

oWord:EndPage()  
oWord:Protect('clave')  // para proteger el Documento
oWord:save()
oWord:End()



DE ESTA FORMA LO HABRO
oWord:=Tword():New() 
oWord:OpenDoc(cOutFile)   // con todo y path
oWord:Preview()



DE ESTA FORMA LO IMPRIMO
oWord:=Tword():New() 
oWord:OpenDoc(cOutFile)   // con todo y path
oWord:PrintDoc()


La variable cOutFile debes colocar el nombre del archivo: PEPE.doc

espero que te sea util

un abrazo

david
argentina
Posts: 133
Joined: Fri Nov 30, 2007 11:34 AM
Clase TWord
Posted: Fri Nov 14, 2008 06:57 PM

Gracias David.

Como verás así abro el documento y así intento hacerlo.

OpenDoc() me genera un error ya que me dice que no existe el método GET. Si nos vamos al método OpenDoc, vemos que en efecto ahí está el problema. Por eso pregunto si se debe enlazar alguan librería que no tengo en mi fichero RMK o cuano enlazo con VerCe.

Muchas gracias y un saludo

Saludos. Fernando

Continue the discussion