Ayuda con este codigo

08/09/2009 - 17:18 por Alejandro Garcia G. | Informe spam
Saludos a todos(as): he encontrado un codigo muy interesante en el
PortalFox, pero no logro que me ejecute bien y creo que es por que no
esta bien descrito o no se como colocarlo, es decir, cual es la
funcion (de donde a donde va), que parametros debo anexar, la
estructura del documento cual es...

Se que es una inquetud tonta, pero no logro que me corra bien,
agradezco a ustedes si me guian un poco mas, gracias.

Abrir, Modificar, Guardar e Imprimir archivos .doc usando OpenOffice
Writer

local array laNoArgs[1]
local loSManager, loSDesktop, loStarDoc, loReflection,
loPropertyValue, loOpenDoc, loCursor, loFandR

loSManager = createobject( "Com.Sun.Star.ServiceManager.1" )

loSDesktop = loSManager.createInstance( "com.sun.star.frame.Desktop" )
comarray( loSDesktop, 10 )

loReflection = loSManager.createInstance
( "com.sun.star.reflection.CoreReflection" )
comarray( loReflection, 10 )

loPropertyValue = THISFORM.createStruct( @loReflection,
"com.sun.star.beans.PropertyValue" )

laNoArgs[1] = loPropertyValue
laNoArgs[1].name = "ReadOnly"
laNoArgs[1].value = .F.

* crea un archivo nuevo ...
* url = "private:factory/swriter"

* Datos que vienen de la base de datos ...

lcTmp = "nombre del origen de datos"

lcNro_infor = PADL(&lcTmp..nro_infor, 8, '0')
lcDetalle = &lcTmp..detalle
lcFecha = DTOC(&lcTmp..fecha)

* Puede usar archivos en los 2 formatos: .odt y .doc
lcArchivoOrigen = "C:/temp/modelo1.odt"
lcArchivoDestino = "C:/temp/eco" + lcNro_infor + " - " + ALLTRIM
(lcDetalle) + ".odt"
* c:\temp\eco00112638 - 53565 diaz de rodriguez
claudia.odt

lcArchivoOrigen = "C:/temp/modelo1.doc"
lcArchivoDestino = "C:/temp/eco" + lcNro_infor + " - " + ALLTRIM
(lcDetalle) + ".doc"
* c:\temp\eco00112638 - 53565 diaz de rodriguez
claudia.doc

COPY FILE (lcArchivoOrigen) TO (lcArchivoDestino)

url = "file:///" + lcArchivoDestino

loOpenDoc = loSDesktop.LoadComponentFromUrl(url, "_blank", 0,
@laNoargs)

* escribir texto en el documento ...
loCursor = loOpenDoc.text.CreateTextCursor()
loOpenDoc.text.InsertString(loCursor, "HELLO FROM VFP", .f. )

* Objeto para buscar las Marcas en el Documento
* si las marcas son encontradas, son remplazadas
* si alguna marca no existiera, no hay mayor problema, simplemente no
se remplaza

loFandR = loOpenDoc.createReplaceDescriptor
loFandR.searchRegularExpression = .T.

loFandR.setSearchString("«nro_infor»")
loFandR.setReplaceString(lcNro_infor)
loOpenDoc.ReplaceAll(loFandR)

loFandR.setSearchString("«fecha»")
loFandR.setReplaceString(lcFecha)
loOpenDoc.ReplaceAll(loFandR)

loFandR.setSearchString("«detalle»")
loFandR.setReplaceString(lcDetalle)
loOpenDoc.ReplaceAll(loFandR)

* imprime el documento
* loOpenDoc.printer()

* graba el documento ...
* loOpenDoc.store()

* grabar con otro nombre ...
* Url = "file:///C:/temp/test3.odt"
* loStarDoc.storeAsURL(URL, @laNoargs)

RETURN

* CreateStruct --*
PARAMETERS toReflection, tcTypeName

local loPropertyValue, loTemp

loPropertyValue = createobject( "relation" )

toReflection.forName( tcTypeName ).createobject( @loPropertyValue )

return ( loPropertyValue )

El CreateStruct, yo lo uso como un metodo del formulario ...

Marcelo ARDUSSO
Rafaela, Santa Fe. Argentina

* http://wiki.services.openoffice.org...tarDesktop
* http://user.services.openoffice.org...p?fP&t06

* vb_oo2.zip <- ejemplo en visual basic
* Archivo descargado de La Web del Programador
* http://www.lawebdelprogramador.com

El siguiente es el archivo Modelo 1

Modelo 1
-
Protocolo Nº «nro_infor»
Fecha «fecha»

Paciente: «detalle»

Estimado/a «detalle»

Esta es una prueba para generar informes en
WRITER desde un programa de Visual Foxpro 9.0

Sin otro particular lo saludamos atte.

powered by: Visual Foxpro 9.0
 

Leer las respuestas

#1 Enrique Muñiz
08/09/2009 - 17:38 | Informe spam
tenes el OpenOffice Writer? cual es el error, en que linea?
Enrique Muñiz
Departamento Desarrollo
Servicios & Sistemas

"Alejandro Garcia G." escribió en el mensaje
news:
Saludos a todos(as): he encontrado un codigo muy interesante en el
PortalFox, pero no logro que me ejecute bien y creo que es por que no
esta bien descrito o no se como colocarlo, es decir, cual es la
funcion (de donde a donde va), que parametros debo anexar, la
estructura del documento cual es...

Se que es una inquetud tonta, pero no logro que me corra bien,
agradezco a ustedes si me guian un poco mas, gracias.

Abrir, Modificar, Guardar e Imprimir archivos .doc usando OpenOffice
Writer

local array laNoArgs[1]
local loSManager, loSDesktop, loStarDoc, loReflection,
loPropertyValue, loOpenDoc, loCursor, loFandR

loSManager = createobject( "Com.Sun.Star.ServiceManager.1" )

loSDesktop = loSManager.createInstance( "com.sun.star.frame.Desktop" )
comarray( loSDesktop, 10 )

loReflection = loSManager.createInstance
( "com.sun.star.reflection.CoreReflection" )
comarray( loReflection, 10 )

loPropertyValue = THISFORM.createStruct( @loReflection,
"com.sun.star.beans.PropertyValue" )

laNoArgs[1] = loPropertyValue
laNoArgs[1].name = "ReadOnly"
laNoArgs[1].value = .F.

* crea un archivo nuevo ...
* url = "private:factory/swriter"

* Datos que vienen de la base de datos ...

lcTmp = "nombre del origen de datos"

lcNro_infor = PADL(&lcTmp..nro_infor, 8, '0')
lcDetalle = &lcTmp..detalle
lcFecha = DTOC(&lcTmp..fecha)

* Puede usar archivos en los 2 formatos: .odt y .doc
lcArchivoOrigen = "C:/temp/modelo1.odt"
lcArchivoDestino = "C:/temp/eco" + lcNro_infor + " - " + ALLTRIM
(lcDetalle) + ".odt"
* c:\temp\eco00112638 - 53565 diaz de rodriguez
claudia.odt

lcArchivoOrigen = "C:/temp/modelo1.doc"
lcArchivoDestino = "C:/temp/eco" + lcNro_infor + " - " + ALLTRIM
(lcDetalle) + ".doc"
* c:\temp\eco00112638 - 53565 diaz de rodriguez
claudia.doc

COPY FILE (lcArchivoOrigen) TO (lcArchivoDestino)

url = "file:///" + lcArchivoDestino

loOpenDoc = loSDesktop.LoadComponentFromUrl(url, "_blank", 0,
@laNoargs)

* escribir texto en el documento ...
loCursor = loOpenDoc.text.CreateTextCursor()
loOpenDoc.text.InsertString(loCursor, "HELLO FROM VFP", .f. )

* Objeto para buscar las Marcas en el Documento
* si las marcas son encontradas, son remplazadas
* si alguna marca no existiera, no hay mayor problema, simplemente no
se remplaza

loFandR = loOpenDoc.createReplaceDescriptor
loFandR.searchRegularExpression = .T.

loFandR.setSearchString("«nro_infor»")
loFandR.setReplaceString(lcNro_infor)
loOpenDoc.ReplaceAll(loFandR)

loFandR.setSearchString("«fecha»")
loFandR.setReplaceString(lcFecha)
loOpenDoc.ReplaceAll(loFandR)

loFandR.setSearchString("«detalle»")
loFandR.setReplaceString(lcDetalle)
loOpenDoc.ReplaceAll(loFandR)

* imprime el documento
* loOpenDoc.printer()

* graba el documento ...
* loOpenDoc.store()

* grabar con otro nombre ...
* Url = "file:///C:/temp/test3.odt"
* loStarDoc.storeAsURL(URL, @laNoargs)

RETURN

* CreateStruct --*
PARAMETERS toReflection, tcTypeName

local loPropertyValue, loTemp

loPropertyValue = createobject( "relation" )

toReflection.forName( tcTypeName ).createobject( @loPropertyValue )

return ( loPropertyValue )

El CreateStruct, yo lo uso como un metodo del formulario ...

Marcelo ARDUSSO
Rafaela, Santa Fe. Argentina

*
http://wiki.services.openoffice.org...tarDesktop
* http://user.services.openoffice.org...p?fP&t06

* vb_oo2.zip <- ejemplo en visual basic
* Archivo descargado de La Web del Programador
* http://www.lawebdelprogramador.com

El siguiente es el archivo Modelo 1

Modelo 1
-
Protocolo Nº «nro_infor»
Fecha «fecha»

Paciente: «detalle»

Estimado/a «detalle»

Esta es una prueba para generar informes en
WRITER desde un programa de Visual Foxpro 9.0

Sin otro particular lo saludamos atte.

powered by: Visual Foxpro 9.0

Preguntas similares