[RESUELTO] Guardar localización de una carpeta

Discute sobre las herramientas de la base de datos

[RESUELTO] Guardar localización de una carpeta

Notapor JuanPana » Vie Feb 12, 2021 2:04 pm

Hola,

Estoy realizando una base de datos sobre los archivos multimedia que tengo en mi NAS. Necesito tener catalogado el material de las grabaciones que realizo con mi cámara (fecha, lugar, formato...), las cuales estas ordenadas por carpetas en función del evento grabado.

Es por ello que me gustaría poder tener un campo que almacene la ubicación de cada carpeta, para posteriormente poder abrirla directamente desde Base.
¿Es posible hacerlo? He visto ejemplos en este mismo foro más complejos con macros para adjuntar documentos, pero no termino de aclararme en cuestión de carpetas.

Espero que podáis darme alguna indicación de por dónde tirar.

Muchas gracias.
Última edición por JuanPana el Vie Mar 26, 2021 9:00 pm, editado 1 vez en total
OpenOffice 4.1.8 - macOS 11.0.1
JuanPana
 
Mensajes: 8
Registrado: Lun Dic 28, 2020 6:39 pm

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor RMG » Vie Feb 12, 2021 4:24 pm

Hola,

Esta macro en Win te puede valer, en Mac no lo se. La carpeta debe estar alojada donde se encuentre la BD, en caso contrario debes poner toda la ruta.

Código: Seleccionar todo   Expandir vistaContraer vista
Sub AbrirCarpeta (Evento)
Dim oForm As Object
Dim Carpeta As String
   oForm = Evento.Source.Model.Parent
   Carpeta= oForm.GetByName("TU_CAMPO_NOMBRE_CARCARPETA").Text
   GlobalScope.BasicLibraries.LoadLibrary("Tools")   
   Shell "explorer "& ConvertToURL(DirectoryNameoutofPath (ThisDatabasedocument.getURL(),"/",0) &"/"& Carpeta & "/"
End Sub


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

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor JuanPana » Vie Feb 12, 2021 7:58 pm

Estupendo, me pongo a probar desde aquí.

Muchas gracias.
OpenOffice 4.1.8 - macOS 11.0.1
JuanPana
 
Mensajes: 8
Registrado: Lun Dic 28, 2020 6:39 pm

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor JuanPana » Sab Feb 13, 2021 11:02 pm

He estado probando, pero por más vueltas que le doy, no logro solucionar el error:

Imagen Imagen

Por más que busco, me quedo atascado y no paso de ahí.

¿Alguna sugerencia?

Y, por cierto, con esto abro una ubicación introducida a mano. Me gustaría que con otro botón se abriera el explorador de archivos, yo navegara hasta la ruta y esta se quedara almacenada en el campo. Para luego ya con este botón poder abrirla.

Muchas gracias.
OpenOffice 4.1.8 - macOS 11.0.1
JuanPana
 
Mensajes: 8
Registrado: Lun Dic 28, 2020 6:39 pm

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor RMG » Dom Feb 14, 2021 11:54 am

Hola,

Adjunta un pequeño ejemplo de tu BD para reproducir el problema y acertar mejor con la solución.

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

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor JuanPana » Dom Feb 14, 2021 5:56 pm

RMG escribió:Adjunta un pequeño ejemplo de tu BD para reproducir el problema y acertar mejor con la solución.


Adjunto el archivo con el que estoy haciendo las pruebas.

Gracias!
Adjuntos
Prueba Base Datos Video.odb.zip
Pruebas BBDD Video
(35.91 KiB) 33 veces
OpenOffice 4.1.8 - macOS 11.0.1
JuanPana
 
Mensajes: 8
Registrado: Lun Dic 28, 2020 6:39 pm

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor RMG » Dom Feb 14, 2021 7:08 pm

Hola,

El error lo tenias en el nombre del control, no es lo mismo "Ubicacion" que "txtUbicacion". Siempre aconsejo poner el mismo nombre del campo al control.
Revisa mi propuesta, no solo guarda la carpeta, sino incluso el nombre del archivo. Después lo abre directamente con el botón, no solo muestra la carpeta. Si no lo quieres así, te dejo como deber hacerlo como prefieras, con lo que te he hecho lo puedes hacer.

Saludos
Adjuntos
Prueba Base Datos Video.zip
(40.9 KiB) 52 veces
OpenOffice 4.1.9 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3811
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor JuanPana » Dom Feb 14, 2021 9:12 pm

Perfecto!. Vaya error lo de no fijarme en el nombre real. Le voy a dar una vuelta para registrar solo carpetas.

Muchas gracias.
OpenOffice 4.1.8 - macOS 11.0.1
JuanPana
 
Mensajes: 8
Registrado: Lun Dic 28, 2020 6:39 pm

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor JuanPana » Mar Feb 16, 2021 8:26 pm

Hola de nuevo.

Estoy dándole vueltas al ejemplo, pero la macro pide la ubicación de un archivo (sInsertarDoc). Me gustaría que no guardase un archivo concreto, sino solo el directorio donde está, para luego poder abrir esa carpeta (sAbrirDoc). Estoy buscando en la documentación como cambiar esa opción, pero no logro dar con la correcta.

También me atasco en el if que comprueba si el campo está vacío, ya que cuando quiero modificar la ruta (por si se ha introducido una incorrecta) la macro salta y no continúa.

Código: Seleccionar todo   Expandir vistaContraer vista
   If oFormD.IsModified Then
      If oFormD.IsNew Then oFormD.InsertRow Else oFormD.UpdateRow
   End If


Muchas gracias por vuestra ayuda.
OpenOffice 4.1.8 - macOS 11.0.1
JuanPana
 
Mensajes: 8
Registrado: Lun Dic 28, 2020 6:39 pm

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor RMG » Jue Feb 18, 2021 2:00 pm

Hola,

Con esto puedes seleccionar un archivo cualquiera de una carpeta y te guarda solo el nombre de esta, después la puedes abrir. Como te dije solo era trastear un poco.

Código: Seleccionar todo   Expandir vistaContraer vista
Sub InsertaUnaCarpeta (Evento)' Se debe seleccionar un archivo cualquiera.
Dim oFormD As Object
Dim oDialFP As Object
Dim sURL As String
Dim totalcaracteres As Integer
Dim contador As integer
Dim caracter As String
   oFormD=Evento.Source.Model.Parent
   sURL = ConvertToURL(oFormD.Columns.GetByName("Ubicacion").GetString)
   oDialFP = CreateUnoService ("com.sun.star.ui.dialogs.FilePicker")
   oDialFP.Title = "Elige una carpeta"
   If Dir(sURL)<> "" Then oDialFP.DisplayDirectory = sURL
   If oDialFP.Execute Then
      sURL = oDialFP.Files(0)
      totalcaracteres = Len(sURL)
   Do
       If Mid(sURL, totalcaracteres - contador, 1) <> "/" Then
          caracter = Mid(sURL, totalcaracteres - contador,1 )
       Else
          caracter = "/"    
       End if
       contador = contador + 1
       sURL = Left(sURL, totalcaracteres - contador)
    Loop While caracter <> "/"
      oFormD.Columns.GetByName("Ubicacion").UpdateString(sURL)
   End If
   If oFormD.IsModified Then 'con esto se guarda el registro automaticamente
      If oFormD.IsNew Then oFormD.InsertRow Else oFormD.UpdateRow
   End If
End Sub

Sub MuestraUnaCarpeta (Evento)
Dim oForm As Object
Dim Carpeta As String
   oForm = Evento.Source.Model.Parent
   Carpeta= oForm.GetByName("Ubicacion").Text
   GlobalScope.BasicLibraries.LoadLibrary("Tools")   
   Shell "explorer "& Carpeta
End Sub


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

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor JuanPana » Jue Mar 25, 2021 1:43 pm

Hola de nuevo,
He estado usando este último código, pero me surgen dos problemas que soy incapaz de resolver.
El primero de ellos es que solo me deja guardar una ruta, ya que cuando cambio de registro e introduzco otra, no puedo seleccionarla. El segundo problema es a la hora de abrir la carpeta, ya que muestra un error por el que no encuentra el archivo.

En estos videos se aprecia el comportamiento:
Fallo 1
https://youtu.be/YEVY88Fd70E

Fallo 2
https://youtu.be/wFN6x086hQM

Espero que podáis aclararme por donde puedo tirar.
Muchas gracias.
OpenOffice 4.1.8 - macOS 11.0.1
JuanPana
 
Mensajes: 8
Registrado: Lun Dic 28, 2020 6:39 pm

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor RMG » Jue Mar 25, 2021 7:42 pm

Hola,

Solo he detectado un error, y lo he solucionado ampliando el tamaño del campo "Ubicacion" a 255 caracteres. Quizás también te pueda pasar que no guardes el registro después de efectuar el cambio y antes de cambiar de registro..

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

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor JuanPana » Vie Mar 26, 2021 6:15 pm

Revisando el código de nuevo, me parecía raro que en Mac también se usara "explorer "& Carpeta, busque información especifica para Mac, pero no pude encontrar nada. Probando opciones al azar: Finder, comandos del terminal... al final di con "open "& Carpeta y funciona. Ahora sí abre la ruta almacenada.
Precisamente para guardar la ruta no he encontrado manera de solucionarlo... en OpenOffice, pero sí en LibreOffice. Con el mismo código, sin cambiar nada funciona perfectamente. Supongo que algo debe haber en la versión para Mac que lo impide.

Copio el código que finalmente he usado, por si alguien en el futuro necesita echarle un vistazo:

Código: Seleccionar todo   Expandir vistaContraer vista
Sub InsertaUnaCarpeta (Evento)' Se debe seleccionar un archivo cualquiera.
Dim oFormD As Object
Dim oDialFP As Object
Dim sURL As String
Dim totalcaracteres As Integer
Dim contador As Integer
Dim caracter As String
   oFormD=Evento.Source.Model.Parent
   sURL = ConvertToURL(oFormD.Columns.GetByName("Ubicacion").GetString)
   oDialFP = CreateUnoService ("com.sun.star.ui.dialogs.FilePicker")
   oDialFP.Title = "Elige una carpeta"
   If Dir(sURL)<> "" Then oDialFP.DisplayDirectory = sURL
   If oDialFP.Execute Then
      sURL = oDialFP.Files(0)
      totalcaracteres = Len(sURL)
   Do
       If Mid(sURL, totalcaracteres - contador, 1) <> "/" Then
          caracter = Mid(sURL, totalcaracteres - contador,1 )
       Else
          caracter = "/"   
       End if
       contador = contador + 1
       sURL = Left(sURL, totalcaracteres - contador)
    Loop While caracter <> "/"
      oFormD.Columns.GetByName("Ubicacion").UpdateString(sURL)
   End If
   If oFormD.IsModified Then 'con esto se guarda el registro automaticamente
      If oFormD.IsNew Then oFormD.InsertRow Else oFormD.UpdateRow
   End If
End Sub

Sub MuestraUnaCarpeta (Evento)
Dim oForm As Object
Dim Carpeta As String

   oForm = Evento.Source.Model.Parent
   Carpeta= oForm.GetByName("Ubicacion").Text
 
   Shell "open " & Carpeta
End Sub


Muchas gracias RMG por tus vitales indicaciones.
Un saludo.
Última edición por JuanPana el Vie Mar 26, 2021 9:01 pm, editado 1 vez en total
OpenOffice 4.1.8 - macOS 11.0.1
JuanPana
 
Mensajes: 8
Registrado: Lun Dic 28, 2020 6:39 pm

Re: Guardar localización de una carpeta (y poder abrirla lue

Notapor RMG » Vie Mar 26, 2021 8:41 pm

Hola,

Gracias a ti también por tu aporte. Si consideras que esto esta resuelto, recuerda marcarlo como tal, nos ayuda a mantener un foro más organizado.

viewtopic.php?f=3&t=2668

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


Volver a Base

¿Quién está conectado?

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