Clase TWord

Clase TWord

Postby fergonm » 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
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby fergonm » Thu Nov 06, 2008 7: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
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby Manuel Aranda » Thu Nov 06, 2008 7:24 pm

Hola Fernando:

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

Code: Select all  Expand view

................
      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
User avatar
Manuel Aranda
 
Posts: 602
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby fergonm » Thu Nov 06, 2008 7:47 pm

Manuel Aranda wrote:Hola Fernando:

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

Code: Select all  Expand view

................
      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
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

asi uso tword

Postby Ramon Paredes » 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......
User avatar
Ramon Paredes
 
Posts: 215
Joined: Fri Feb 02, 2007 3:38 pm
Location: Managua, Nicaragua

Postby fergonm » Fri Nov 07, 2008 7:40 am

Ramón.

Muchas gracias por tu contestación. Probaré

Un saludo.
Saludos. Fernando
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby fergonm » Fri Nov 07, 2008 7: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
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

un trozo de codigo

Postby Ramon Paredes » Fri Nov 07, 2008 8: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......
User avatar
Ramon Paredes
 
Posts: 215
Joined: Fri Feb 02, 2007 3:38 pm
Location: Managua, Nicaragua

Re: un trozo de codigo

Postby fergonm » 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
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby fergonm » Sun Nov 09, 2008 5: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
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby fergonm » Tue Nov 11, 2008 10:34 am

Pueden ayudarme.

Muchas gracias.
Saludos. Fernando
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby dobfivewin » 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
dobfivewin
 
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Postby fergonm » Fri Nov 14, 2008 8: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
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby dobfivewin » Fri Nov 14, 2008 4: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

Code: Select all  Expand view
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
Code: Select all  Expand view
oWord:=Tword():New()
oWord:OpenDoc(cOutFile)   // con todo y path
oWord:Preview()



DE ESTA FORMA LO IMPRIMO
Code: Select all  Expand view
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
dobfivewin
 
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Postby fergonm » Fri Nov 14, 2008 6: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
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 75 guests