Power Builder - Problema al abrir un word

 
Vista:

Problema al abrir un word

Publicado por JuanCarlos (5 intervenciones) el 06/05/2010 17:05:57
Hola que tal?, resulta que estoy haciendo un software que genera un contrato en word. Este word es un documento en donde le he insertado marcadores por cada campo que se debe llenar automáticamente. El problema es que si es que genero el contrato (mediante un botón "Generar Contrato") y no cierro el documento, cuando genero otro contrato de otra persona, se cierra el programa.

Este es el código dentro del botón "Generar Contrato":

OLEObject ole_object
ole_object = CREATE OLEObject
SetPointer(HourGlass!)
if ole_object.ConnectToNewObject("word.application.8") = 0 then
ole_object.Documents.open("C:\Inmobiliaria Integrado\CONTRATO_ROCIO")
ole_object.visible=true

ole_object.selection.Goto(true,0,0,"propietario")
ole_object.selection.font.bold=true
ole_object.selection.font.name="Arial"
ole_object.selection.font.size=12
ole_object.selection.typetext(upper(sle_propietario.text))
else
messagebox('OLE Error','Unable to start an OLE server process!',Exclamation!)
DESTROY ole_object
end if

DESTROY ole_object
__
en el doc. word he insertado un marcador llamada 'propietario'. Con ésto se genera el contrato con los datos que requiero, pero al generar otro contrato, el programa se cierra siesque ya hay uno abierto. Y necesito, en el peor de los casos, que salga un mensaje pero que no se cierre el programa. Agradezco la ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema al abrir un word

Publicado por Tiburoncin (28 intervenciones) el 06/05/2010 18:59:18
Juan Carlos
Me parece Dr. que tu problema es que tu destruyes el OLE pero sin haber cerrado previamente la coneccion a la aplicacion word.

OLEObject ole_object
ole_object = CREATE OLEObject
SetPointer(HourGlass!)
if ole_object.ConnectToNewObject("word.application.8") = 0 then
ole_object.Documents.open("C:\Inmobiliaria Integrado\CONTRATO_ROCIO")
ole_object.visible=true

ole_object.selection.Goto(true,0,0,"propietario")
ole_object.selection.font.bold=true
ole_object.selection.font.name="Arial"
ole_object.selection.font.size=12
ole_object.selection.typetext(upper(sle_propietario.text))
else
messagebox('OLE Error','Unable to start an OLE server process!',Exclamation!)

ole_object.Documents.close
ole_object.DisConnectObject()
DESTROY ole_object

end if

ole_object.Documents.close
ole_object.DisConnectObject()
DESTROY ole_object

Ojala te sirva
Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al abrir un word

Publicado por JuanCarlos (5 intervenciones) el 07/05/2010 00:35:01
Tu idea está buena Tiburoncín, pero me salía error al grabar defrente. Lo que hice (y creo que lo debí hacer desde el principio) es guardar el archivo de word que manipula el programa como solo lectura. Parece que el error era porque al abrir más de un contrato hacía cambios en ambos, y grababa uno, entonces los otros no abrían porque no reconocían los últimos cambios. Bueno, ese creo que era el problema. Puse el word como solo lectura y ya no me ha salido errores, he abierto varios contratos a la vez y normal.
Pero tu ayuda fue importante.
Gracias.
Más bien, otra pregunta ya que estamos en el tema de los documentos, como habrás visto le asigno la dirección en el disco de esta forma:

ole_object.Documents.open("C:\Inmobiliaria Integrado\CONTRATO_ROCIO")

Pero si el documento lo cambian de posición o no está, también se cierra el programa. Yo lo estaba poniendo como oculto para que no lo puean eliminar, pero después, para probar, lo cambié de posición y se cerró el programa, porque no reconoce la dirección.
Si me podrían ayudar en ese aspecto, se los agradecería.
Cuídense.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al abrir un word

Publicado por Tiburoncin (28 intervenciones) el 07/05/2010 15:26:45
Bueno JC,
Parece que la lo estas forzando a usar una carpeta para si los usuarios tiene permisos para mover los archivos, es mejor que uses:

Esto es para poder buscar un archivo y mas adelante abrirlo modificarlo...etc, retorna 1 si selecciono un archivo sino retorna 0 me parece

li_rc = GetFileOpenName ( "Seleccione Archivo", ls_ruta_archivo, ls_archivo, "XLS","Excel Files(*.xls),*.xls" )

Esto es para poder gurdar un archivo , retorna 1 si guarda sino retorna 0 me parece
li_rc = GetFileSaveName ( "Select File", ls_path, ls_file, "xls", &
"Libro de Excel (*.xls),*.xls" , "C:\", 32770)

luego puede usar
ole.Documents.SaveAs(ls_path) //primera vez que se guarda
ole.Documents.Save() //despues de abrirlo y modificarlo para guarda cambios

suerte
Ojala te Sirva
Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al abrir un word

Publicado por jhon lozano (2 intervenciones) el 29/09/2014 16:10:47
buenos días juan carlos , queria saber si usted me puede colaborar con un problema lo que sucede es que estoy generando el word con la libreria ole2 apartir de una plantilla , cuando corro la aplicación local funciona bien pero cuando la subo al servidor hace todo el proceso pero no despliega el word agardeceria mucho si me puede colaborar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al abrir un word

Publicado por Jose (9 intervenciones) el 11/05/2010 17:09:56
Hola Amigos foristas.
Bueno mi consulta es, estoy trabajando con bookamarks tebgo una plantilla donde esta los bookmark ejemplo.
Nº [NRO_CONTRATO]
pero cuando guardo el documento guarda pero lo que hace es eliminar el marcador [NRO_CONTRATO].
he visto lo que hace es remplazar el valor que paso del power por el marcador.
con esta sentencia es lo que paso mi variable a word.

ole_object.ActiveDocument.Bookmarks.item("NRO_CONTRATO").Select
ole_object.Selection.insertbefore(ls_nro_contrato)
y tambien probe con

ole_object.selection.goto(true,0,0,"NRO_CONTRATO")
ole_object.Selection.typetext(ls_nombres )
lo que nesecito es actualizar el texto del bookmars y mas no eleminar.
Espero sugerencias
Gracias de Antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al abrir un word

Publicado por JuanCarlos (5 intervenciones) el 11/05/2010 18:26:08
Yo tuve ese problema al comienzo, pero por código no conseguí corregirlo, y aparte como ya se acercaba el tiempo de entrega del software no investigué más. Lo que hice como solución (más que todo lo más fácil que se pueda ocurrir) es guardar el archivo de plantilla como solo lectura, así cada vez que generes el documento y éste se llene con los datos corrspondientes a los marcadores, al grabar te pedirá una nueva ubicación, creando un documento nuevo y tu documento plantilla seguirá tal como estaba.
AHora como te digo, fue mi solución rápida, siesque encuentro un código más consistente te lo hago saber. Igualmente espero que también aportes si consigues nueva información.
Saludos.
Dios te bendiga.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al abrir un word

Publicado por Jose (9 intervenciones) el 13/05/2010 05:24:52
Gracias pero Nesecito hacer por script.
espero alguien me pueda ayudar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al abrir un word

Publicado por jhon lozano (2 intervenciones) el 29/09/2014 16:09:58
buenos días juan carlos , queria saber si usted me puede colaborar con un problema lo que sucede es que estoy generando el word con la libreria ole2 apartir de una plantilla , cuando corro la aplicación local funciona bien pero cuando la subo al servidor hace todo el proceso pero no despliega el word agardeceria mucho si me puede colaborar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar