[RESUELTO] El archivo LCK no se borra al cerrar (Win 7)

Discute sobre las herramientas de la base de datos

[RESUELTO] El archivo LCK no se borra al cerrar (Win 7)

Notapor Urxvt » Lun Jul 17, 2017 4:32 pm

Buenas tardes,

Me he fijado en que si uso una macro para cerrar la base de datos, el archivo temporal LCK que se genera no se borra. Si en cambio la cierro con el botón de cerrar de la ventana, sí que se borra. Mirando el Task Manager veo que los procesos soffice.exe y sbase.exe siguen activos mientras que el programa se cerró... Y por supuesto, si intento eliminarlo directamente me dice que está siendo utilitzado.

Windows 7, LibreOffice Base versión 5.2.6.2. En cambio en GNU/Linux no tengo este problema (bueno, en la versión que tengo en Arch se borra después de un minuto, algo que tampoco es muy normal).

Esta es mi macro:

Código: Seleccionar todo   Expandir vistaContraer vista
REM  *****  BASIC  *****

Option Explicit

Sub CloseBase()
   Dim opcion As integer
      opcion = MsgBox ("¿Quieres salir de la BD?",4,"Salida")
   If opcion = 6 Then
      ThisDatabaseDocument.CurrentController.CloseSubComponents()
      Wait(500)
      ThisDataBaseDocument.Close(True)
   End if
End Sub


¿A alguien más le pasa? ¿Usáis otro código para tal fin? Personalmente, copié el código del directorio de bases de datos.
Última edición por Urxvt el Mar Jul 18, 2017 6:18 pm, editado 1 vez en total
Kubuntu + LibreOffice 4.2 / Arch Linux & i3 + LibreOffice 5.3
Urxvt
 
Mensajes: 30
Registrado: Vie Mar 10, 2017 10:13 pm

Re: El archivo LCK no se borra al cerrar (Win 7)

Notapor Urxvt » Mar Jul 18, 2017 3:06 pm

Parece ser que se cierra el documento pero no del todo, de modo que la solución pasa por añadirle esta línea de código al final de la función:

Código: Seleccionar todo   Expandir vistaContraer vista
starDesktop.terminate
Kubuntu + LibreOffice 4.2 / Arch Linux & i3 + LibreOffice 5.3
Urxvt
 
Mensajes: 30
Registrado: Vie Mar 10, 2017 10:13 pm

Re: El archivo LCK no se borra al cerrar (Win 7)

Notapor Urxvt » Mar Jul 18, 2017 6:17 pm

Así queda la solución definitiva:

Código: Seleccionar todo   Expandir vistaContraer vista
Sub CloseBase()
   Dim opcion As integer
      opcion = MsgBox ("¿Quiere salir de la BD?", 4, "Salida")
   If opcion = 6 Then
      ThisDatabaseDocument.CurrentController.CloseSubComponents()
      Wait(500)
      ThisDataBaseDocument.Close(True)
      If GetGUIType = 1 Then
         Wait(500)
         starDesktop.terminate
      End If
   End if
End Sub


Explicación: muestra cuadro de diálogo preguntando si se quiere cerrar la aplicación. Si la respuesta es sí, cierra los subcomonentes de la BD, espera 500 milisegundos y cierra el documento. Entonces, comprueba si estás en entorno Windows y si es sí, espera otros 500 milisegundos y termina el LibreOffice.
Kubuntu + LibreOffice 4.2 / Arch Linux & i3 + LibreOffice 5.3
Urxvt
 
Mensajes: 30
Registrado: Vie Mar 10, 2017 10:13 pm


Volver a Base

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados