Clase Tword

Clase Tword

Postby Ramon Paredes » Mon May 11, 2009 2:48 pm

Hola amigos del Foro,

Tengo una aplicacion que emite un contrato de servicios para ello utilizo una plantilla de word y reemplazo los campos desde codigo pero el problema a que me enfrento es que cada vez que se ejecuta la accion de apertura de plantilla el word me la abre en modo de solo lectura y espera confirmacion del usuario y lo que es logico el programa se cuelga hasta que desde el administrador de tareas le indico que abra un copia de solo lectura y se ejecuta lo demas sin problemas, dentro del codigo al final lo salvo con otro nombre, no se que me falta para evitar esto, el codigo es el siguiente :

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

oWord:OpenDoc("C:\SISTEMAS\MONGALO2\CONTRATO.DOC")
oWord:SetMainDoc()
oWord:SetCm()


mNombre := ALLTRIM(E->SUSCRIBE)
mCedula := ALLTRIM(E->CEDULA)
mEmpresa := ALLTRIM(E->Nom_Cli)
mUbica1 := ALLTRIM(E->UBICA1)+" "+ALLTRIM(E->UBICA2)+" "+ALLTRIM(E->DESCRIP)
MPLAZO3 := E->PLAZO
mPlazo := E->PLAZO
mFecha := DTOC(E->FEC_INI)
mFecha1 := DTOC(E->FEC_FIN)
// mFecha3 := E->FEC_INI
// mFecha4 := E->FEC_FIN

MMONTO3 := E->MONTO
mPrecio := TRANSFORM(E->MONTO,"999,999.99")
mdetpla := CONVERTIR(MPLAZO3,"Meses ")
mPrecio2 := "("+CONVERTIR(MMONTO3,"Dólares ")+")"
mEcivil := E->E_CIVIL

SYSREFRESH()

oWord:Replace([xNombre],mNombre)
oWord:Replace([xEcivil],mEcivil)
oWord:Replace([xCedula],mCedula)
oWord:Replace([xEmpresa],mEmpresa)
oWord:Replace([xUbica1],mUbica1)
oWord:Replace([xPlazo],mPlazo)
oWord:Replace([xDetplazo],mdetpla)
oWord:Replace([xFecha],mFecha)
oWord:Replace([xFec],mFecha1)
oWord:Replace([xPrecMes],mPrecio)
oWord:Replace([xPrec],mPrecio2)
oWord:GoTop()
oWord:Replace("["," ")
oWord:Replace("]"," ")


oWord:Save("C:\DATA1\PRUEBA.DOC")
oWord:Preview()

oWord:PrintDoc(,,,,,,,,,)

oFont1:End()
oFont2:End()


CLOSE LISTA1

SELECT A

RETURN NIL

agradeceria de sobremanera cualquier ayuda al respecto

Saludos 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: Clase Tword

Postby Manuel Aranda » Mon May 11, 2009 3:41 pm

Que tal un oWord:End(.F.) después de oFont2:End().
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: Clase Tword

Postby Ramon Paredes » Mon May 11, 2009 5:58 pm

Gracias Manuel por contestar probare tu propuesta y te comento que paso,

Saludos

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: Clase Tword

Postby Ramon Paredes » Mon May 11, 2009 9:29 pm

Manuel,

esa opcion funciona bien para cerrar word sin problemas pero lo que yo necesito es abrir el documento plantilla y que no me apaarezca el tipico mensaje de word de este documento ha sido bloqueado por el usuario x para edicion Abrir una copia como solo lectura ? y logico el sistema se cuelga esperando la repuesta de word entonces hay que abrir el administrador de tareas donde sale el documento como archivo en uso y darle que abra como copia de solo lectura y el sistema continua, ese es el problema que tengo, como abrir la plantilla de otra forma que no me la bloquee el word para edicion ?

Gracias de antemano al que me pueda ayudar,

Saludos

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: Clase Tword

Postby Alfredo Arteaga » Tue May 12, 2009 2:54 am

Uso esto y funciona, espero a ti tambien:

Code: Select all  Expand view

   oWord:=TWord():New()
   IF oWord:IsVisible()
      oWord:Hide()
   ENDIF
   oWord:OpenDoc(cPlan)
   CursorWait()
   oWord:Replace("[Fecha]",cDate)
   ...
   nPos:=oWord:Find("<Tabla>")
   oWord:AddTables(aTab,nPos)
   oWord:Save(cFile)
   oWord:EditDoc()
 
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Re: Clase Tword

Postby Manuel Aranda » Tue May 12, 2009 6:21 am

Hola Ramón:

Así es mo lo hago yo y no temgo problema alguno:
Code: Select all  Expand view


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

 
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: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: Clase Tword

Postby Ramon Paredes » Wed May 13, 2009 3:23 am

Gracias Alfredo y Manuel,

Probare ambas opciones a ver que sucede, les comentare los resultados,

Nuevamente agradecido por su atencion

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 44 guests