Página 1 de 1

Error al cerrar documento desde un diálogo

NotaPublicado: Jue Mar 03, 2016 8:07 pm
por JosePadilla
Hola a todos. Hace unos días actualize LibreOffice a la versión 5.0.5.2, ya que antes trabajaba con la versión estable 4, y ahora tengo problemas para cerrar un documento de Calc desde un cuadro de dialogo. Con la versión anterior iba perfecto pero con esta nueva versión me cierra todos los documentos que hay abiertos dando el error: SEH Exception: ACCES VIOLATION.

Al intentar buscar el problema en el archivo en cuestión opté por crear un nuevo archivo muy simple para desechar algún código erróneo. Y el problema persiste. El código es el siguiente
Código: Seleccionar todo   Expandir vistaContraer vista
Dim Dialog1 As Object

Sub cargadialogo1

    DialogLibraries.LoadLibrary("Standard")
    Dialog1=createUnoDialog(DialogLibraries.Standard.Dialog1)
    Dialog1.execute()
    Dialog1.dispose()
End sub

Sub cerrardocumento

    Dim oDoc As Object
    Dialog1.EndExecute()
    oDoc=ThisComponent.CurrentController.Frame
    oDoc.close(True)

    End Sub


La macro es muy simple. Se carga el diálogo al abrir el documento. El diálogo tiene un solo el botón para cerrar el documento. Cuando pulso el botón ocurre el problema comentado anteriormente. Sin embargo si cierro el cuadro de dialogo con la x y luego cierro el documento sin grabar no me ocurre. Comentar que en la última versión de OpenOffice funciona perfectamente.

¿Alguien sabe solución al problema? ¿Es un problema de la última versión? .Gracias de antemano

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Jue Mar 03, 2016 8:26 pm
por mauricio
Cambia...
Código: Seleccionar todo   Expandir vistaContraer vista
    oDoc=ThisComponent.CurrentController.Frame

por...
Código: Seleccionar todo   Expandir vistaContraer vista
    oDoc=ThisComponent

https://wiki.openoffice.org/wiki/ES/Man ... documentos

Saludos

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Jue Mar 03, 2016 8:52 pm
por JosePadilla
Perfecto. Muchas gracias por tu pronta respuesta y por tu magnifico Manual.

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Jue Mar 03, 2016 8:57 pm
por mauricio
Si consideras que la pregunta ha sido respondida, por favor, marca como resuelto el tema, gracias.

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Jue Mar 03, 2016 9:13 pm
por JosePadilla
Bueno creo que me he anticipado. Probé tu solución, grabe los cambios y funcionó perfectamente la primera vez al cerrar el documento. Pero al volverlo abrir y ejcutar la macro de cerrar vuelve a ocurrir el mismo problema.
Lo que he hecho es:
Código: Seleccionar todo   Expandir vistaContraer vista
Dim Dialog1 As Object

Sub cargadialogo1

    DialogLibraries.LoadLibrary("Standard")
    Dialog1=createUnoDialog(DialogLibraries.Standard.Dialog1)
    Dialog1.execute()
    Dialog1.dispose()
End sub

Sub cerrardocumento

    Dim oDoc As Object
    Dialog1.EndExecute()
    oDoc=ThisComponent
    oDoc.close(True)

    End Sub

¿Alguna Sugerencia? Gracias.

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Jue Mar 03, 2016 10:17 pm
por mauricio
A mi me funciona correctamente... prueba con el archivo que anexo...

Saludos

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Jue Mar 03, 2016 11:28 pm
por fornelasa
¿Es un problema de la última versión?

A mi me parece que si (al menos en Win).
Tal cual la macro de Jose, considero se trata de un Bug (LO 5.0.5.2) ya que en AOO funciona correctamente.
Tambien funciona bien en LO si no se le asigna al evento "Abrir Documento", pero si la macro "arranque" se asigna a dicho evento se produce el bug.

Saludos.

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Jue Mar 03, 2016 11:58 pm
por mauricio
Tal como comente nuestro amigo fornelasa, así sucede... pero... no me imagino en que escenario se abre un documento solo para cerrarlo... si nos das más detalles de que quieres hacer realmente, tal vez haya otras opciones...

Saludos

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Vie Mar 04, 2016 12:24 am
por JosePadilla
Pues confirmo lo que apunta formelasa. Si el dialogo se ejecuta al abrir el documento ocurre el error. Si lo ejecutamos posterior no. Por lo menos se va acotando el problema.
En cuanto al fichero que me envias, Mauricio, ejecuto la macro para abrir el dialogo y me aparece el siguiente error:

Error de ejecución de BASIC.
Se ha producido una excepción
Type: com.sun.star.lang.WrappedTargetException
Message:
TargetException:
Type: com.sun.star.script.LibraryNotLoadedException
Message: .

A continuación cierro este cuadro de mensaje de error y vuelvo a ejecutar la macro de carga del dialogo y abre correctamente. Y al cerrar no hay mensaje de error. Examinando tu archivo veo que difiere del mio en que no tiene
DialogLibraries.LoadLibrary("Standard")

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Vie Mar 04, 2016 12:32 am
por JosePadilla
Pues concretamente se trata de un documento que imprime etiquetas. Los datos se encuentran almacenados en una hoja del propio documento. Mediante el cuadro de dialogo elegimos la etiqueta que queremos imprimir. Una vez impresa la etiqueta desde ese dialogo cierro el dialogo y cierro el documento a la vez. No necesito grabar nada.

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Vie Mar 04, 2016 1:36 am
por mauricio
Prueba con el evento "Vista creada"...
Después de varias pruebas también falla...

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Vie Mar 04, 2016 6:14 pm
por fornelasa
Sugiero regreses a la versión previa de LO donde si funcionaba ..... digo, si es que es muy importante esta tarea.
Saludos, Federico.

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Vie Mar 04, 2016 8:56 pm
por SLV-es
Por lo general no es recomendable utilizar en producción las versiones no calificadas como estables.

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Vie Mar 04, 2016 9:10 pm
por mauricio
La versión 5.0.5 se supone, es estable...

Re: Error al cerrar documento desde un diálogo

NotaPublicado: Sab Mar 05, 2016 12:24 am
por JosePadilla
Es cierto, se supone que esta versión es ya estable. Como solución momentánea puedo volver a la versión anterior o bien evitar lanzar el cuadro de diálogo al iniciar el documento. Pero es una pena que falle esta forma porque es una forma elegante, a mi parecer, de ejecutar una hoja de calculo convirtiéndola en "pseudoprograma". Ya me entendéis, con solo ventanitas.
Esperemos que la gente de LibreOffice corrija el problema si es efectivamente un bug. Muchas gracias a todos por vuestro interés.