[RESUELTO]Macro CerrarBD modifi para CerrarFormsPreguntando

Discute sobre las herramientas de la base de datos

[RESUELTO]Macro CerrarBD modifi para CerrarFormsPreguntando

Notapor antonsiete » Vie Jul 13, 2018 9:18 am

Hola,

en el proceso de simplificar Botones en mis Formularios, he quitado Botones de los que habia puesto y he añadido un Boton con la "Accion" Guardar, para tenerlo al menos, en los Forms que no ponga la Barra de Navegacion Prederteminada(para tener visibles, el Icono Prismaticos, para realizar posibles Busquedas de Registros, y quizas el de Actualizar Controles(para cuando introduzca algun dato nuevo en la tabAuxilar, y poder tenerlo disponible en el Control correspondienteen el momento de estar usando ese Form, por ejemplo en el FormSociasAlta)

Me he dado cuenta, que si por error, pulso el Boton Cerrar Formulario, sin haber previamente pulsado el Boton "Guardar" el formulario se cierra directamente sin guardar los cambios hechos en los registros, y se me ha ocurrido "adaptar" el Macro de CerrarBD(que si pregunta si deseas guardar los cambios en los Forms antes de cerrarlos) para usarlo en el boton de Cerrar Formulario y que se abra la ventana de dialogo "El formulario actual ha cambiado".

He intentado encontrar entre los Macros de OpenOficce el que hace esa funcion , pero no he sido capaz de encontrarlo(creo que tiene algo que uno que es "StoreForm" pero no he querido arriesgar, ya que en el codigo del Macro CerrarBD solo pone "Store"
Código: Seleccionar todo   Expandir vistaContraer vista
If ThisDatabaseDocument.isModified = True Then ThisDatabaseDocument.Store
) , asi que tirando del Manual de Macros de Mauricio me he decido a escribir yo el codigo para "crear" ese dialogo, y el dialogo si me aparece al pulsar el Boton Cerrar Formulario.

El problema lo tengo en la asignacion de Macros a dos de las Opciones.
Si no ando muy descaminado deberia quedar asi:

1- en la opcion (6), "Si", para guardar los cambios y cerrar el Formulario, se usaria el propio codigo del Macro CerrarBd
Código: Seleccionar todo   Expandir vistaContraer vista
If opcion = 6 Then If ThisDatabaseDocument.isModified = True Then ThisDatabaseDocument.Store
                                      ThisDatabaseDocument.CurrentController.CloseSubComponents()   'Cierra todos los formularios y pregunta si guarda los datos


2- en la opcion (7), "No", para cerrar el Formulario sin guardar los cambios, no se a que Macro de OpenOficce habria que llamar,
Código: Seleccionar todo   Expandir vistaContraer vista
ElseIf opcion = 7 Then '(ThisDatabaseDocument.Store) SUSTITUIR POR CERRAR SIN GUARDAR


3- en la opcion (2), "Cancelar", para cerrar el Dialogo sin cerrar el Formulario, no se a que Macro de OpenOficce habria que llamar,
Código: Seleccionar todo   Expandir vistaContraer vista
ElseIf opcion = 2 Then '(ThisDatabaseDocument.Store) SUSTITUIR CERRAR MSGBOX SIN CERRAR FORMULARIO


Con lo cual el Codigo que tengo ahora mismo queda asi:

Código: Seleccionar todo   Expandir vistaContraer vista
'****** MACRO PARA Cerrar Forms Preguntando *******************

Sub CerrarFormPreguntando()'Poner en el botón para Cerrar Formulario
   Dim opcion As integer
      opcion = MsgBox ("¿El contenido del formulario actual ha cambiado, deseas guardar los cambios?",35,"Opcion Cerrar Formulario")
   If opcion = 6 Then
      If ThisDatabaseDocument.isModified = True Then ThisDatabaseDocument.Store
      ThisDatabaseDocument.CurrentController.CloseSubComponents()   'Cierra todos los formularios y pregunta si guarda los datos

   ElseIf opcion = 7 Then '(ThisDatabaseDocument.Store) SUSTITUIR POR CERRAR SIN GUARDAR
   
   ElseIf opcion = 2 Then '(ThisDatabaseDocument.Store) SUSTITUIR CERRAR MSGBOX SIN CERRAR FORMULARIO
   
   End if                     
End Sub


Ni siquiera estoy seguro de que sea una buena idea hacer esto(yo creo que si, por si acaso se pulsa por despiste, el Boton Cerrar Formulario sin haber pulsado el Boton Guardar), a ver que opinais, y si es buena idea, a ver a que Macros tendria que llamar en esas dos Opciones.

Un saludo y gracias
Última edición por antonsiete el Vie Jul 13, 2018 10:45 am, editado 1 vez en total
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
antonsiete
 
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Macro CerrarBD modificado para CerrarFormsPreguntando

Notapor RMG » Vie Jul 13, 2018 10:18 am

Hola,

Para cerrar un formulario, para mi la mejor opción es emplear la API UNO y no usar macros. Para probar, en las propiedades del botón en la propiedad Acción seleccionas Abrir documento/pagina web y en URL pones .uno:CloseDoc

Con esto resuelves tu pregunta de preguntar si guardas al cerrar el formulario. Recuerda eliminar si ya tiene asignada una macro de cierre.

Saludos
OpenOffice 4.1.5 y LibreOffice 5.4.5.1 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3330
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Macro CerrarBD modificado para CerrarFormsPreguntando

Notapor antonsiete » Vie Jul 13, 2018 10:42 am

Hola,

yo actualmente estoy usando esto:

Código: Seleccionar todo   Expandir vistaContraer vista
'Inicio Macro Boton Cerrar cualquier formulario
Sub CerrarFormulario(Evento)
   ThisComponent.CurrentController.Frame.Close( True )
   
End Sub
'Fin Macro


Que creo que saque de alguno de tus ejemplos, pero le he visto esa pega de arriesgar a Cerrar sin Guardar.

Estupendo, acabo de probar esta opcion que comentas, funciona perfecto. Lo que si he visto es que en el primer intento que he hecho me han salido dos Dialogos, en uno de ellos ponia "el formulario "Inicio" ha cambiado...." y en el otro ponia "el formulario actual ha cambiado ......", supongo que sera por que ya tenia abierto el formInicio en modo diseño y posiblemente todavia quedaban restos de la forma anterior de cerrar, guardados en memoria o algo asi, ahora ya solo sale el dialogo standar "El formulario actual ha cambiado........" y por lo que veo funciona a la perfeccion.

Nuevamente, lo mas sencillo es la mejor solucion.

Un saludo y muchisimas gracias
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
antonsiete
 
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Macro CerrarBD modificado para CerrarFormsPreguntando

Notapor antonsiete » Vie Jul 13, 2018 10:44 am

La duda que me surge:

Esa API UNO, ¿es una Macro de las que hay en la Biblioteca de OpenOffice o no tiene nada que ver con las Macros?
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
antonsiete
 
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: [RESUELTO]Macro CerrarBD modifi para CerrarFormsPregunta

Notapor RMG » Vie Jul 13, 2018 11:37 am

Hola,

Pues no te se concretar cosas de UNO, yo también he aprendido investigando y probando. Otras opciones.

.uno:CloseDoc Cierra el formulario activo.
.uno:RecSave Guarda el registro activo y se mantiene en el mismo.
.uno:Refresh Pregunta si guarda el registro activo, y va al primer registro del formulario
.uno:Print Imprime el formulario actual

Saludos
OpenOffice 4.1.5 y LibreOffice 5.4.5.1 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3330
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: [RESUELTO]Macro CerrarBD modifi para CerrarFormsPregunta

Notapor antonsiete » Vie Jul 13, 2018 12:51 pm

hola,

ok, tomo nota para mas adelante.

Un saludo
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
antonsiete
 
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm


Volver a Base

¿Quién está conectado?

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