Error al crear carpeta

¿Hola podrían ayudarme por favor? Tengo una tabla llamada carpeta con los campos:
Cod   año   val1   val2   val3
234 2000 12.3 -4 11
234 2000 22.3 14 12
139 2001 13 22 17
135 2001 32 -4 14
445 2001 13.4 11 14
567 2002 22 12.3 16
Deseo crear mediante código carpetas con el nombre de los años y dentro de ellas subcarpetas con el nombre de los campos val1, val2, y val3.
Para ello utilizo este programa:
Sub Prueba()
Dim rst
Dim strSQL As String
strSQL = "SELECT DISTINCT Cod, Año FROM Carpeta"
Set rst = CurrentDb.OpenRecordset(strSQL)
   Do While Not rst.EOF
        MkDir "C:\Tarea\" & rst!Año
        MkDir "C:\Tarea\" & rst!Año & "\Val1"
        MkDir "C:\Tarea\" & rst!Año & "\Val2"
        MkDir "C:\Tarea\" & rst!Año & "\Val3"
        rst.MoveNext
   Loop
If Not rst Is Nothing Then
       rst.Close
       Set rst = Nothing
End If
End Sub
Esto funciona bien, crea una carpeta para el año 2000 con subcarpetas Val1, Val2, Val3, lo mismo hace para el año 2001 y para el 2002 pero cuando llega al fin de los registros correspondiente a años en laconsulta, sale un error en el programa:
"Error de acceso a la ruta de archivo"
No se que parte me falta o hay algo que pueda estar fallando.
Gracias por su ayuda.

1 respuesta

Respuesta
1
No se porque motivo pero el Distinct no esta funcionando, entonces cuando el ciclo va por la segunda iteración quiere crear la carpeta 2000 que ya existe y por eso te mande el error, le agregue unas cuantas lineas al código, y quedo funcional, pero es decisión tuya si quieres probar con algo más.
Saludos Fraternos.
Sub Prueba()
Dim rst
Dim strSQL As String
Dim Anterior As Integer
strSQL = "SELECT DISTINCT Cod, Año FROM Carpeta"
Set rst = CurrentDb.OpenRecordset(strSQL)
   Do While Not rst.EOF
        If rst!Año <> Anterior Then
            MkDir "C:\Tarea\" & rst!Año
            MkDir "C:\Tarea\" & rst!Año & "\Val1"
            MkDir "C:\Tarea\" & rst!Año & "\Val2"
            MkDir "C:\Tarea\" & rst!Año & "\Val3"
            Anterior = rst!Año
        End If
        rst.MoveNext
   Loop
If Not rst Is Nothing Then
       rst.Close
       Set rst = Nothing
End If
Hola probé con el código que me das pero me sigue saliendo el mismo error, crea todas las carpetas con los años correspondientes y las sub carpetas pero cuando llega a crear el ultimo año con los subcampos, repite el loop vuelve a ingresar y ahí me sale el error nuevamente, no se que puede estar pasando... yo tengo access 2000.
Saludos, gracias!
Mmm, que extraño a mi me funciona correctamente, solo que yo estoy usando access 2007 pero no creo que deba haber problema por las versiones.
Si podes mejor mandame el código que estas usando de regreso para chekarlo, o si no veré si arreglo la consulta para que funcione el distinct.
Hola ya solucione el problema, modifique la consulta:
strSQL = "SELECT DISTINCT  Año FROM Carpeta"
Y así funciona bien no hay problema!
Gracias...!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas