[RESUELTO] Guardar localización de una carpeta
[RESUELTO] Guardar localización de una carpeta
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.
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
Re: Guardar localización de una carpeta (y poder abrirla lue
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.
Saludos
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
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
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Guardar localización de una carpeta (y poder abrirla lue
Estupendo, me pongo a probar desde aquí.
Muchas gracias.
Muchas gracias.
OpenOffice 4.1.8 - macOS 11.0.1
Re: Guardar localización de una carpeta (y poder abrirla lue
He estado probando, pero por más vueltas que le doy, no logro solucionar el error:
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.
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
Re: Guardar localización de una carpeta (y poder abrirla lue
Hola,
Adjunta un pequeño ejemplo de tu BD para reproducir el problema y acertar mejor con la solución.
Saludos
Adjunta un pequeño ejemplo de tu BD para reproducir el problema y acertar mejor con la solución.
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Guardar localización de una carpeta (y poder abrirla lue
Adjunto el archivo con el que estoy haciendo las pruebas.RMG escribió: Adjunta un pequeño ejemplo de tu BD para reproducir el problema y acertar mejor con la solución.
Gracias!
- Adjuntos
-
- Prueba Base Datos Video.odb.zip
- Pruebas BBDD Video
- (35.91 KiB) Descargado 153 veces
OpenOffice 4.1.8 - macOS 11.0.1
Re: Guardar localización de una carpeta (y poder abrirla lue
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
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) Descargado 178 veces
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Guardar localización de una carpeta (y poder abrirla lue
Perfecto!. Vaya error lo de no fijarme en el nombre real. Le voy a dar una vuelta para registrar solo carpetas.
Muchas gracias.
Muchas gracias.
OpenOffice 4.1.8 - macOS 11.0.1
Re: Guardar localización de una carpeta (y poder abrirla lue
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.
Muchas gracias por vuestra ayuda.
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
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
Re: Guardar localización de una carpeta (y poder abrirla lue
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.
Saludos
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
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
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Guardar localización de una carpeta (y poder abrirla lue
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.
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
Re: Guardar localización de una carpeta (y poder abrirla lue
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
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.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Guardar localización de una carpeta (y poder abrirla lue
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:
Muchas gracias RMG por tus vitales indicaciones.
Un saludo.
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
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
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
Re: Guardar localización de una carpeta (y poder abrirla lue
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.
https://forum.openoffice.org/es/forum/v ... f=3&t=2668
Saludos
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.
https://forum.openoffice.org/es/forum/v ... f=3&t=2668
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)