Página 1 de 1

[RESUELTO] Sincronizar Base en la nube, automáticamente

Publicado: Dom Jul 16, 2017 12:16 pm
por Urxvt
¡Hola a todos!

He visto que en LibreOffice 5 existe la posibilidad de abrir archivos del LibreOffice que estén subidos en la nube, por ejemplo en Google Drive. Esto funciona bien en documentos de Write o Calc, pero es lento en Base (quizá porque internamente hace consultas SQL y eso obliga a estar leyendo contínuamente los datos en la nube).

Pienso que es mejor tener una carpeta en local sincronizada con Google Drive, y después de usar y cerrar la base de datos (cuando ya se ha borrado el archivo que se genera automáticamente), sincronizar manualmente la carpeta con la que está en la nube (comando 'grive'); lo hago así en GNU/Linux. Sé que en Windows usando la aplicación oficial de Google Drive se sincronizan automáticamente, pero no es así usando 'grive'.

¿Podría ejecutar ShellScript desde el propio Base, de modo que antes de cerrar la bd me pregunte si quiero sincronizarla, y si pulso que sí, sea el propio Base el que ejecute el comando 'grive' automáticamente? No conozco los límites de la API de BASIC, y por eso pregunto.

Si no es posible, ¿cómo lo hacéis vosotros? ¿Qué me recomendáis?

¡Saludos y gracias!

Re: Sincronizar Base en la nube, automáticamente

Publicado: Dom Jul 16, 2017 7:21 pm
por RMG
Hola,

Personalmente, lo que hago es usar LO o AOO como interfaz y SQLite como motor de base de datos.Se gana mucho en estabilidad y velocidad por lo que puedes trabajar directamente en la nube.

Saludos

Re: Sincronizar Base en la nube, automáticamente

Publicado: Dom Jul 16, 2017 10:48 pm
por Urxvt
He descubierto que se pueden ejecutar comandos de ShellScript con la función Shell. De este modo he creado una macro que se ejecuta cuando se cierra el documento y lo que hace es preguntar si se quiere sincronizar la BD antes de salir, y si la respuesta es afirmativa la sincroniza. Cuando se ha sincronizado, aparece el mensaje de «Sincronizada». Este es el código que he realizado:

Código: Seleccionar todo

Sub Sincronizar()
	Dim syncronize As integer
	syncronize = MsgBox ("¿Quiere sincronizar la BD en Google Drive?", 4, "Sincroniza")
	If syncronize = 6 Then
		Shell ("bash -c 'cd $HOME/Grive/ && grive && notify-send Sincronizada'", true)
	End if							
End Sub
No obstante, sería mejor sincronizar el archivo cada vez que se guarden los cambios. Pero entonces el archivo temporal LCK también se sube a la nube. Pero esto tampoco es ningún problema. A la vez, y eso ya es otro tema, también podría hacer un script que haga la sincronización al arrancar el sistema para bajar los archivos actualizados, si los hay.

Por el momento desconozco SQLite, así que voy a leerme la documentación y haré algunas pruebas. Tal vez me llegue a ser más cómodo que lo que acabo de hacer.

Saludos y gracias.

Re: [RESUELTO] Sincronizar Base en la nube, automáticamente

Publicado: Lun Jul 17, 2017 9:21 am
por Urxvt
Cuando entro en Windows, la aplicación oficial de Google Drive ya sincroniza automáticamente, por lo tanto esta función debe ser filtrada, además de que da error al cerrar porque no encuentra los comandos especificados en la función Shell —algo que es obvio y lógico—.

Para solucionar esto, dejo aquí la solución por si es de interés para otros. Se trata de encerrar el contenido de la función con un condicional:

Código: Seleccionar todo

If GetGUIType = 4 Then

End sub
Si GetGUIType es 4 significa que es UNIX (se entiende UNIX-like). Fuente: https://help.libreoffice.org/3.3/Basic/ ... Runtime/es

Re: [RESUELTO] Sincronizar Base en la nube, automáticamente

Publicado: Mar Jul 25, 2017 7:05 pm
por Urxvt
Hola RMG. Me estoy leyendo un manual sobre como conectar AOO y LO con un archivo de SQLite pero me encuentro con algunas desventajas, por ejemplo: una vez creada la tabla, no se puede modificar, como añadir nuevos campos o cambiar los tipos de datos.

Realmente usar SQLite sería una gran solución ya que me permitiría separar los datos de la interficie gráfica (para añadirle nuevas consultas o formularios sin tener que estar pidiendo que no la actualicen durante X horas), algo que también me interesa. Pero es una BD que usamos varias personas y normalmente le hacemos modificaciones o le añadimos campos que en un principio no fueron previstos.

En todo caso, esto me sirve para aprender muchas cosas. Así que gracias de nuevo por la info! (De momento seguiré manteniendo la solución que expuse en su momento).

Edito a día 2 de Enero de 2018 para evitar que el hilo suba: encuentro interesante destacar lo bien que va MEGAsync en GNU/Linux. He hecho la prueba editando bases de datos y no hay ningún tipo de problema. Es una lástima que no haya buenas herramientas de sincronización de Google Drive para GNU/Linux: grive requiere hacer la sincronización manualmente, y rclone es más potente pero no hace sincronización bidireccional, es más parecido al comando rsync, que permite hacer una copia diferencial de ruta1 a ruta2.

Re: [RESUELTO] Sincronizar Base en la nube, automáticamente

Publicado: Mié Jul 26, 2017 12:09 pm
por RMG
Hola,

Si que puedes crear campos o modificarlos. Para ello debes instalar el complemento SQLite manager en Firefox. Creo recordar que mauricio en su web tiene un tutorial de como hacerlo.

Básicamente es tener instalado el navegador Firefox, en complementos buscas SQLitemanager y lo instalas. Desde aquí puedes trabajar SQLite como si fuera una BD normal.

Saludos

Re: [RESUELTO] Sincronizar Base en la nube, automáticamente

Publicado: Vie Oct 05, 2018 9:49 pm
por Urxvt
Hola de nuevo. Perdón por revivir un tema tan antiguo y resuelto, pero quería aportar algo de información en el mismo.

Sí que se pueden modificar las bases de datos hechas con SQLite y sin necesidad del plugin SQLitemanager para Firefox... Por ejemplo, con sqlitebrowser. Dejo el enlace por si alguien llega aquí y no quiere pensar (como yo en su día) que únicamente es posible con el plugin para Firefox.

https://github.com/sqlitebrowser/sqlitebrowser

¡Saludos!