Como abrir carpetas?

Discute sobre las herramientas de la base de datos

Como abrir carpetas?

Notapor Milor » Vie Oct 05, 2018 2:34 pm

He probado varios códigos pero sin éxito.

Tengo un formulario que se asocia a varias tablas (relacionadas) uno de esos campo es el ID (que se genera automáticamente), la idea sería que al pulsarlo abriera un carpeta (la creara en caso de no estar) que tiene el mismo nombre que el ID.

Cual sería el directorio donde estaría ese carpeta? En el mismo que esta la base de datos...
Actualmente el código que tengo es:
Código: Seleccionar todo   Expandir vistaContraer vista
REM  *****  BASIC  *****

Sub OpenSpecificFolder(Event As Object)

   Dim oForm As Object
   Dim idExpediente as string   
   Dim directorio

   idExpediente = Event.Source.Model.Parent.Parent.getByName("fmtID").CurrentValue
   directorio = DirectoryNameoutofPath(ThisComponent.Parent.getURL(), "/")
   
   If NOT FileExists(directorio & "/"  & idExpediente) Then
      print "No existe"
      MkDir (directorio & "/"  & idExpediente)
   Else
      print "Existe"
   End If
   print directorio & "/" & idExpediente
   
End Sub


El ultimo print tendría que cambiarlo por el "comando" para la carpeta (en principio solo estará en windows pero que fuera compatible con linux tambien). No existe el OpDir no? :lol:
LibreOffice 4.2.4.2 en Windows 7 y Ubuntu
El OLMO no da PERAS, usa los PROGRAMAS para lo que están DISEÑADOS
Te ofrecemos nuestro tiempo y ofreces tu tiempo, no lo desperdiciemos. Explicarse y Comprenderse es necesario.
Avatar de Usuario
Milor
 
Mensajes: 60
Registrado: Sab Ago 14, 2010 5:37 pm

Re: Como abrir carpetas?

Notapor Longi » Vie Oct 05, 2018 4:15 pm

Buenas!

Mira estos códigos que he recogido de algunas de mis rutinas...
Como es de suponer tendrás que probarlos en tu entorno de trabajo (soy muy dado a meter la pata), pero en un principio debieran funcionar.
Con más florituras los uso para guardar documentos o para luego mostrarlos, pero en general así debiera funcionar.

Si quieres hacer una carpeta en el caso de que no la tengas hecha:
Código: Seleccionar todo   Expandir vistaContraer vista
        CARPETA= directorio & "/"  & idExpediente
        oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )       ' Servicio para acceso a archivos
        If Not FileExists(CARPETA) Then                                                   ' Si la carpeta no existe
        oSimpleFileAccess.createFolder(CARPETA)                                           ' La creamos
        End if                                                                            ' Acabamos la condición


Si quieres abrir una carpeta existente:
Código: Seleccionar todo   Expandir vistaContraer vista
CARPETA= directorio & "/"  & idExpediente
oDialFP=CreateUnoService ("com.sun.star.ui.dialogs.OfficeFilePicker")                      ' Creamos el servicio FilePicker
oDialFP.setDisplayDirectory (ConvertToURL(CARPETA))        ' Carpeta en la que recogemos el documento escaneado
oDialFP.Title="Escoja un documento"                                                       ' Título del cuadro de diálogo
oDialFP.Execute


Este filepicker es algo más feo, pero el que estamos acostumbrados a ver no funciona (o no funcionaba), abriendo siempre en forma genérica. Éste abre la carpeta que le mandas que abra.

También es posible utilizar cualquier otro directorio: el temporal en C, el escritorio o algo que tengas por ahí muy escondido.

Un saludo! ;)
Openoffice 4.1.5, en Windows 10
Openoffice 4.1.3, en Windows 7
Libreoffice 6.0, en Windows 10
Longi
 
Mensajes: 487
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Como abrir carpetas?

Notapor Milor » Lun Oct 08, 2018 9:23 am

El problema que tiene este es que sino me equivoco a la que coges un archivo se cierra.

Al final el código que estoy usando es:
Código: Seleccionar todo   Expandir vistaContraer vista
REM  *****  BASIC  *****

Sub OpenSpecificFolder(Event As Object)
   GlobalScope.BasicLibraries.loadLibrary("Tools")

   Dim oForm As Object
   Dim idExpediente as string   
   Dim directorio

   idExpediente = Event.Source.Model.Parent.Parent.getByName("fmtID").CurrentValue
   directorio = DirectoryNameoutofPath(ThisComponent.Parent.getURL(), "/")
   
   If NOT FileExists(directorio & "/"  & idExpediente) Then
      'print "No existe"
   MkDir (directorio & "/"  & idExpediente)
   Else
      'print "Existe"
   End If
   'print directorio & "/" & idExpediente
   if GetGUIType() = 4 Then
      Shell("pcmanfm",2, directorio & "/" & idExpediente)
   Else
      print GetGUIType() & "No es linux"
      Shell("explorer.exe",2, directorio & "/" & idExpediente)
   End If
   
End Sub


De momento parece funcionar en windows y en lubuntu. Aunque tendré en cuenta tu codigo. El único fallo que le veo es que en windows al menos no me pilla focus, pero tengo que repasar el segundo parametro del comando shell
LibreOffice 4.2.4.2 en Windows 7 y Ubuntu
El OLMO no da PERAS, usa los PROGRAMAS para lo que están DISEÑADOS
Te ofrecemos nuestro tiempo y ofreces tu tiempo, no lo desperdiciemos. Explicarse y Comprenderse es necesario.
Avatar de Usuario
Milor
 
Mensajes: 60
Registrado: Sab Ago 14, 2010 5:37 pm

Re: Como abrir carpetas?

Notapor Longi » Lun Oct 08, 2018 6:06 pm

Buenas!
Sobre tu código he hecho variaciones (y he probado) en Windows:
Si la carpeta no existe, la genera.
Después abre un navegador en la carpeta que habríamos hecho (no aparecería nada), o bien si ya estaba hecha, mostraría documentos Writer, calc, excel y csv (me olvidé poner pdf).
Al seleccionar el documento, lo abre, aunque se pueden variar las opciones, como abrir otra carpeta, escoger un documento y asignarle otra ruta para copiarlo o para cambiarlo de carpeta hacia la seleccionad inicialmente (cosa muy útil en el caso de tener una carpeta de escaneos y quieres asignar una carpeta para cada ID de cada registro del formulario principal, por ejemplo):
Código: Seleccionar todo   Expandir vistaContraer vista
Sub OpenSpecificFolder(Event As Object)
   GlobalScope.BasicLibraries.loadLibrary("Tools")

   Dim oForm As Object
   Dim idExpediente as string   
   Dim directorio

   idExpediente = Event.Source.Model.Parent.getByName("ID").CurrentValue
   directorio = DirectoryNameoutofPath(ThisComponent.Parent.getURL(), "/")
   CARPETA= directorio & "/"  & idExpediente   
   oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )       ' Servicio para acceso a archivos
   If Not FileExists(CARPETA) Then                                                   ' Si la carpeta no existe
   oSimpleFileAccess.createFolder(CARPETA)                                           ' La creamos
   End if                                                                            ' Acabamos la condición
       
   if GetGUIType() = 4 Then
      Shell("pcmanfm",2, directorio & "/" & idExpediente)
   Else
     ' print GetGUIType() & "No es linux"
     ' oDialFP=CreateUnoService ("com.sun.star.ui.dialogs.FilePicker")                ' Creamos el servicio FilePicker     
      oDialFP=CreateUnoService ("com.sun.star.ui.dialogs.OfficeFilePicker")          ' Creamos el servicio FilePicker
      oDialFP.setDisplayDirectory (ConvertToURL(CARPETA))                            ' Carpeta
      oDialFP.appendFilter( "Documentos","*.ods;*.xls*;*.csv;*.odb;*.odt")           ' Filtro
      oDialFP.Title="Escoja un documento"                                            ' Título del cuadro de diálogo
      oDialFP.Execute       
    Dim opt(0) As New "com.sun.star.beans.PropertyValue"                             ' Array de propiedades
    Dim doc As Object                                                                ' Documento
    opt(0).Name = "Hidden"                                                           ' No será en segundo plano
    opt(0).Value = False                                                             ' Ciertamente, en segundo plano
    StarDesktop.loadComponentFromURL(oDialFP.Files(0), "_blank", 0, opt())           ' Abre el documento como plantilla   
   End If
   
End Sub


Quizá te sirva!

Un saludo! ;)
Openoffice 4.1.5, en Windows 10
Openoffice 4.1.3, en Windows 7
Libreoffice 6.0, en Windows 10
Longi
 
Mensajes: 487
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España


Volver a Base

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado