Access - Recorrer puertos USB buscar carpeta

 
Vista:
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Recorrer puertos USB buscar carpeta

Publicado por Angel (90 intervenciones) el 15/02/2017 22:23:27
Hola, he preguntado ya en otros foros pero sin resultados. Quiero añadir mejora a una función que tengo para hacer copia de respaldo. La mejora es exactamente lograr detectar en que puerto usb esta la carpeta COPIAS RESPALDO. He probado con Case, If, pero no me funciona quizás porque soy inexperto. Alguien sabe o puede iniciarme en como conseguirlo.?
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Manuel
Val: 395
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Recorrer puertos USB buscar carpeta

Publicado por Manuel (171 intervenciones) el 17/02/2017 13:26:53
Yo veo varias posibilidades:

1. La que no te daría el puerto, pero si la dirección de la carpeta (si está disponible). Y sería revisar todas las unidades disponibles y dentro de ellas si hay esa carpeta... eso se haría con FileSystemObject. Por ejemplo uno de sus métodos es FolderExists que devuelve true/false dependiendo de si la carpeta buscada existe o no. En cuanto el acceso al disco, pues con los métodos DriveExists no devuelve si existe o no cierta unidad y para el acceso al disco específico (comprobar primero que exista), pues GetDrive. Yo he usado esta estrategia para usar unidades de red (tanto para conectar a una base de datos en donde están efectivamente los datos -base de datos dividida-, como para copias de seguridad, etc)... Además, tienes la propiedad Drives que te devuelve una colección con todos las unidades disponibles.

2. La que te daría más control del puerto, pero implica que tendrías que hacer parte del trabajo en VB.NET, C#... creando un componentes que después llamases desde Access, porque no creo que haya otra forma de usarlo directamente. Y sería a través de lo disponible en el espacio de nombres System.IO.Ports.

3. La tercera es recurrir al API de Windows directamente..., pero te vas a meter un berenjenal de mucho cuidado.

Personalmente creo que con la primera opción tienes de sobra para lo que buscas. Aunque no te dará el puerto en si, si tendrás acceso al Pendrive o HD externo que está conectado al equipo... buscas la carpeta sobre la que hacer la copia de seguridad y escribes como si fuera en C:\ por ejemplo.

Un ejemplo de código que recorre todas las unidades y saca un mensaje con cada letra de unidad disponible:
1
2
3
4
5
6
7
8
9
10
11
12
Dim fso as Object 'para el sistema de archivos
Dim dro as Object 'para la colección de unidades
Dim disco as Object 'para cada unidad en particular
 
Set fso=CreateObjetct("Scripting.FileSystemObject")
Set dro=fso.Drives
 
For Each disco in dro
   If disco.isready Then
       msgbox disco.driveletter
   End If
Next

Pero no dudo de que haya otras opciones y puede que alguna mejor.

Hasta luego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Recorrer puertos USB buscar carpeta

Publicado por Ángel (90 intervenciones) el 19/02/2017 19:20:47
Gracias Manuel por tu respuesta a mi cuestion. He estado probando con la primera opción y ciertamente me recorre todas las unidades. Pero cómo consigo que me muestre solo aquella unidad donde encuentre la carpeta con el nombre que yo le asigne previamente. Si quito el Msgbox ¿Qué debo poner para lograr solo que me muestre por ejemplo en un Textbox, por ejemplo la ruta completa de la unidad y carpeta? Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar