Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

abrir carpetas

Estas en el tema de abrir carpetas en el foro de Bases de Datos General en Foros del Web. Con la base de datos de acces, en un formulario me gustaría saber si pulsando un botón, se puede abrir una carpeta del ordenador en ...

  #1 (permalink)  
Antiguo 10/04/2008, 07:52
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
abrir carpetas

Con la base de datos de acces, en un formulario me gustaría saber si pulsando un botón, se puede abrir una carpeta del ordenador en concreto.

Lo que me gustaría hacer es algo más complejo, pero primero necesito saber si se puede abrir una carpeta con tan sólo darle a un botón en un formulario.
__________________
Cámara Oscura
Etheria
  #2 (permalink)  
Antiguo 10/04/2008, 08:00
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: abrir carpetas

Prueba esto:

Dim Retval
Retval = Shell("explorer.EXE /e, /root, c:\TuCarpeta", 1)

Un saludo
  #3 (permalink)  
Antiguo 10/04/2008, 08:16
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: abrir carpetas

y si la carpeta tiene dos palabras? comillas? >.<

Pero viendo que funcionaba (me abría la menos la unidad C...) vamos a la cuestión. Porque me da a mi que va a ser complicado. En el formulario hay un campo llamado IDDeCiente (Sin la L, quien hizo la base de datos se le escapó esa letra ¬¬). Vale, imaginaos que ese campo contiene el número 1400. Al darle al botón de abrir carpeta quiero que me abra la carpeta suya (llamada 1400), el problema es que donde están los archivos de los clientes es un caos, esto es, para llegar a la carpeta de 1400, tengo que hacer el siguiente recorrido:

* del 1000 al 1999
* 1400 - 1499
* 1400 - 1409
y aquí llegaríamos a la carpeta 1400

A lo que voy, lo que quiero es que busque entre todas las carpetas su carpeta y la abra, el problema que tiene es que hay muchísimas carpetas y todas empiezan en dos:
1-del 0001 al 0999
2- del 1000 al 1999

No se si me explico -.-
__________________
Cámara Oscura
Etheria
  #4 (permalink)  
Antiguo 10/04/2008, 08:19
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: abrir carpetas

Yo no lo he entendido. Cual seria la ruta de la carpeta 1400??

un saludo
  #5 (permalink)  
Antiguo 10/04/2008, 08:25
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: abrir carpetas

D:\GENERAL EMPRESA\CLIENTES\Presupuestos\del 1000 al 1999\1400-1499\1400-1409\1400

a partir de lo rojo dependería del número de cliente
__________________
Cámara Oscura
Etheria
  #6 (permalink)  
Antiguo 10/04/2008, 08:32
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: abrir carpetas

Entonces lo unico que hay que hacer es buscar una rutina para ir concatenando la ruta en una variable, y luego abrir la carpeta. A ver, por partes, primero habria que comprobar si el valor es (>0 y < 1000) o (>=1000 y <2000). Ya tendriamos la primera carpeta que iria despues de presupuestos. Entiendo que luego habria que mirar dentro de que "centena" esta, y luego dentro de que "decena", algo asi??

Un saludo
  #7 (permalink)  
Antiguo 10/04/2008, 08:33
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: abrir carpetas

sip, vas bien encaminado ^_^
__________________
Cámara Oscura
Etheria
  #8 (permalink)  
Antiguo 10/04/2008, 08:51
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: abrir carpetas

Prueba esta rutina, creo que funciona:

Private Sub Comando0_Click()
Dim Retval
'abrimos la carpeta
Retval = Shell("explorer.EXE /e, /root," & RutaCarpeta(Me.Texto0), 1)
End Sub

Public Function RutaCarpeta(NomCarpeta As String) As String
Dim Ruta As String
Dim Digitos(1 To 4) As String

'Guardamos por separado los digitos en el array
For i = 1 To Len(NomCarpeta)
Digitos(i) = Mid(NomCarpeta, i, 1)
Next

Ruta = "D:\GENERAL EMPRESA\CLIENTES\Presupuestos\" 'del 1000 al 1999\1400-1499\1400-1409\1400

'Si el primer digito del numero pasado como string es un 0, primera carpeta. si es un 1, segunda carpeta
If Digitos(1) = 0 Then
Ruta = Ruta & "del 0001 al 0999\"
Else
Ruta = Ruta & "del 1000 al 1999\"
End If

'Añadimos la carpeta correspondiente al segundo digito
Ruta = Ruta & "del " & Digitos(1) & Digitos(2) & "00 al " & Digitos(1) & Digitos(2) & "99\"

'Añadimos la carpeta correspondiente al tercer digito
Ruta = Ruta & "del " & Digitos(1) & Digitos(2) & Digitos(3) & "0 al " & Digitos(1) & Digitos(2) & Digitos(3) & "9\"

'Por ultimo añadimos la carpeta pasada como parametro
Ruta = Ruta & NomCarpeta

'Y se lo devolvemos a la funcion
RutaCarpeta = Ruta
End Function


La funcion pegala en un modulo, y en el ejemplo Me.Texto0 es un cuadro de texto donde estaria el numero de la carpeta (1400)

Un saludo
  #9 (permalink)  
Antiguo 10/04/2008, 08:55
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: abrir carpetas

en el módulo pego todo? o después de esto?:

Private Sub Comando0_Click()
Dim Retval
'abrimos la carpeta
Retval = Shell("explorer.EXE /e, /root," & RutaCarpeta(Me.Texto0), 1)
End Sub

es que esto me suena más a lo que tengo que poner en el botón ><
__________________
Cámara Oscura
Etheria
  #10 (permalink)  
Antiguo 10/04/2008, 08:56
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: abrir carpetas

Sip, en el modulo pega solo la funcion.

Un saludo
  #11 (permalink)  
Antiguo 10/04/2008, 09:01
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: abrir carpetas

algo falla porque me abre la unidad C (cuando tendría que ser la D O_O) >.<
__________________
Cámara Oscura
Etheria
  #12 (permalink)  
Antiguo 10/04/2008, 09:03
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: abrir carpetas

Cambia la funcion por esta:

'************************************************* ***
Public Function RutaCarpeta(NomCarpeta As String) As String
Dim Ruta As String
Dim Digitos(1 To 4) As String

'Guardamos por separado los digitos en el array
For i = 1 To Len(NomCarpeta)
Digitos(i) = Mid(NomCarpeta, i, 1)
Next

Ruta = "D:\GENERAL EMPRESA\CLIENTES\Presupuestos\" 'del 1000 al 1999\1400-1499\1400-1409\1400

'Si el primer digito del numero pasado como string es un 0, primera carpeta. si es un 1, segunda carpeta
If Digitos(1) = 0 Then
Ruta = Ruta & "del 0001 al 0999\"
Else
Ruta = Ruta & "del 1000 al 1999\"
End If

'Añadimos la carpeta correspondiente al segundo digito
Ruta = Ruta & Digitos(1) & Digitos(2) & "00-" & Digitos(1) & Digitos(2) & "99\"

'Añadimos la carpeta correspondiente al tercer digito
Ruta = Ruta & Digitos(1) & Digitos(2) & Digitos(3) & "0-" & Digitos(1) & Digitos(2) & Digitos(3) & "9\"

'Por ultimo añadimos la carpeta pasada como parametro
Ruta = Ruta & NomCarpeta

'Y se lo devolvemos a la funcion
RutaCarpeta = Ruta
End Function
'************************************************* *******

Se me habian olvidado los guiones

Un saludo
  #13 (permalink)  
Antiguo 10/04/2008, 09:04
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: abrir carpetas

sigue igual que antes T.T
__________________
Cámara Oscura
Etheria
  #14 (permalink)  
Antiguo 10/04/2008, 09:06
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: abrir carpetas

Que codigo exacto has puesto en el boton??

Un saludo
  #15 (permalink)  
Antiguo 10/04/2008, 09:10
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: abrir carpetas

ya lo he arreglado XD, era el nombre d euna carpeta XDDD, Graciassss!. Taribo siempre me acabas ayudando ^_^
__________________
Cámara Oscura
Etheria
  #16 (permalink)  
Antiguo 28/05/2008, 03:37
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: abrir carpetas

Resurjo este tema, porque este mismo código me está dando problemas. Veamos, las carpetas me las abre, pero da la casualidad que las carpetas comprendidas entre 1470 al 1479 no las abre (cuando la 1480 o la 1469 si que las abre). No se porqué justo las que están comprendidas entre estos dos no las abre. Alguna idea?

EDIT: nada, le había dado algo al programa porque ahora me las abre ¬¬
__________________
Cámara Oscura
Etheria

Última edición por Koudelka; 28/05/2008 a las 03:45
  #17 (permalink)  
Antiguo 11/09/2008, 07:49
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: abrir carpetas

Vuelvo a tner problemas con el código ya que las carpetas comprendidas entre 0001 a 0999 no me las abre (a partir del 1000 si que las abre), por lo que empiezo a pensar de que la primera parte (la que mira si el primer dígito es = 0) no funciona correctamente.
__________________
Cámara Oscura
Etheria
  #18 (permalink)  
Antiguo 11/09/2008, 08:28
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: abrir carpetas

Puede ser que te pase si en lugar de pasarle a la funcion esto: 0400, le pasas esto 400 ??

Si es asi, prueba cambiando esta parte:

'Guardamos por separado los digitos en el array
For i = 1 To Len(NomCarpeta)
Digitos(i) = Mid(Format(NomCarpeta, "0000"), i, 1)
Next

(en rojo lo añadido)

un saludo
  #19 (permalink)  
Antiguo 11/09/2008, 08:35
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: abrir carpetas

sigue sin funcionar. El caso es que no me da ningún error, simplemente me abre ventana en la unidad C:
__________________
Cámara Oscura
Etheria
  #20 (permalink)  
Antiguo 11/09/2008, 08:49
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: abrir carpetas

Pero la funcion devuelve la ruta correcta???

Un saludo
  #21 (permalink)  
Antiguo 11/09/2008, 08:52
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: abrir carpetas

Me lleva a la unidad C, cuando tendría que llevarme a la D: (eso para empezar XD). Pero sólo lo hace si es entre 0001 y 0999
__________________
Cámara Oscura
Etheria
  #22 (permalink)  
Antiguo 11/09/2008, 08:58
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: abrir carpetas

Pero no me has contestado, la funcion devuleve la ruta correcta???

Ejecuta esto con, por ejemplo, 400 (que no te funcionara ahora)

msgbox RutaCarpeta("400")
if len(dir(RutaCarpeta("400"), vbDirectory))=0 then
msgbox "No se encuntra la ruta")
else
msgbox "Si esta"
end if

un saludo
  #23 (permalink)  
Antiguo 11/09/2008, 08:59
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: abrir carpetas

he hecho un msb box de esta manera

'Si el primer digito del numero pasado como string es un 0, primera carpeta. si es un 1, segunda carpeta
If Digitos(1) = 0 Then
Ruta = Ruta & "del 0001 al 0999\"
MsgBox Ruta
Else
Ruta = Ruta & "del 1000 al 1999\"
End If

y si selecciono un cliente cuyo número es 0004 si que me dice la ruta correcta, por lo que el fallo está en lo siguiente (supongo eh?)
__________________
Cámara Oscura
Etheria
  #24 (permalink)  
Antiguo 11/09/2008, 09:01
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: abrir carpetas

Lo que has dicho antes de mi post (creo que posteamos a la par XD) me da error 28
__________________
Cámara Oscura
Etheria
  #25 (permalink)  
Antiguo 12/09/2008, 00:55
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: abrir carpetas

Estoy probando la funcion con la modificacion que te he indicado y me funciona perfectamente, al menos la funcion me devuelve la ruta correcta, por eso te lo preguntaba, para intentar buscar el error en otro sitio.

Un saludo
  #26 (permalink)  
Antiguo 12/09/2008, 03:04
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: abrir carpetas

Te pego el código que tengo en estos momentos (lo del format lo he dejado, he quitado lo de la carpeta 400)


Public Function RutaCarpeta(NomCarpeta As String) As String
Dim Ruta As String
Dim Digitos(1 To 4) As String

'Guardamos por separado los digitos en el array
For i = 1 To Len(NomCarpeta)
Digitos(i) = Mid(Format(NomCarpeta, "0000"), i, 1)
Next

Ruta = "D:\GENERAL MACRESA\CLIENTES\Presupuestos\" 'del 1000 al 1999\1400-1499\1400-1409\1400

'Si el primer digito del numero pasado como string es un 0, primera carpeta. si es un 1, segunda carpeta
If Digitos(1) = 0 Then
Ruta = Ruta & "del 0001 al 0999\"
Else
Ruta = Ruta & "del 1000 al 1999\"
End If

'Añadimos la carpeta correspondiente al segundo digito
Ruta = Ruta & Digitos(1) & Digitos(2) & "00-" & Digitos(1) & Digitos(2) & "99\"

'Añadimos la carpeta correspondiente al tercer digito
Ruta = Ruta & Digitos(1) & Digitos(2) & Digitos(3) & "0-" & Digitos(1) & Digitos(2) & Digitos(3) & "9\"

'Por ultimo añadimos la carpeta pasada como parametro
Ruta = Ruta & NomCarpeta

'Y se lo devolvemos a la funcion
RutaCarpeta = Ruta
End Function
__________________
Cámara Oscura
Etheria
  #27 (permalink)  
Antiguo 12/09/2008, 04:57
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: abrir carpetas

Pues la acabo de probar y me devuleve la ruta correcta. A ti no??

Un saludo
  #28 (permalink)  
Antiguo 12/09/2008, 05:04
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: abrir carpetas

Pues a mi no o_O.

A ver, explico lo que tuve que hacer, porque quizá el fallo esté ahí y no en otro sitio.

Veamos, originalmente, las carpetas que comprendían entre el 0001 al 0999, en vez de tener 4 dígitos tenían 3 o incluso 2 dígitos, por lo que por ejemplo, para el cliente 4, la carpeta se llamaba 4.

A parte, en la tabla de clientes, los números de cliente no tenían 4 dígitos, así que les puse una máscara de entrada, por lo que 4 acabo siendo 0004.

Después, las carpetas las hemos ido renombrando para que todas tuviesen 4 dígitos.

Y ahora lo que es el módulo no funciona -.-
__________________
Cámara Oscura
Etheria
  #29 (permalink)  
Antiguo 12/09/2008, 05:07
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: abrir carpetas

MIra. te voy a poner un ejemplo, le paso a la funcion esto: "0004", y me devuelve esto:

D:\GENERAL MACRESA\CLIENTES\Presupuestos\del 0001 al 0999\0000-0099\0000-0009\0004


Esta bien??? O ya no es asi?? Como seria??

un saludo
  #30 (permalink)  
Antiguo 12/09/2008, 05:21
Avatar de Koudelka  
Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: abrir carpetas

Nop, tiene que ser así (creo que tienes una carpeta de menos)

D:\GENERAL MACRESA\CLIENTES\Presupuestos\del 0001 al 0999\0001-0099\0001-0099\0001-0009\0004

acabo de darme cuenta de que hay dos carpetas que se llaman igual o_O

Para la carpeta del número 100 sería algo así (habría que renombrar las carpetas)

D:\GENERAL MACRESA\CLIENTES\Presupuestos\del 0001 al 0999\0100-0199\0100-0199\100-109\100
__________________
Cámara Oscura
Etheria
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:28.