La Web del Programador: Comunidad de Programadores
 
    Pregunta:  4264 - PROBLEMAS CON CAMBIO DE DIRECTORIO
Autor:  ROBERTO AVENDAÑO
Hola Amigos:

Resulta que hago un respaldo de todas mis .DBF (Cierre de Mes) a un directorio mensual por ejemplo ENE2000,
Necesito que cuando el usuario lo decida se cambie a las bases de datos de ese mes para visualizar lo que quiera y logicamente no tocar los datos que se estan manejando en el Mes Actual.
He intentado con SET DEFAULT y SET PATH y no me resulta.

Si pueden ayudarme, Muchas Gracias.

  Respuesta:  Ramo Veliz
Es bien sencillo,
primero dentro de tu directorio actual, crea otro directorio por año ejmplo A1999, A2000, A2001
Cuando hagas tus cierres llevalos al año que le corresponde

crea una variable
cRuta='\datos\' &&path actual de tus archivos
cbase='fact'

Crea una rutina donde el usuario puede decir que mes y de que año quiere ver el reporte
cMes='01'
cYear='2000'

cBase='\datos\fact&cMes&Cyear' &&path de copias

Use &cbase

  Respuesta:  Juan Carlos Flores
Amigo, no especificas que tipo de error te da, es posible que no te funcione porque el comandoSET DEFAULT o SET PATH de cambio de directorio de trabajo y a lo mejor tus programas necesitan ejecutar otras DBF´s o Programas que estan el directoria anterior, te recomiendo que hagas una rutina en donde asignes a una variable, la ruta de acceso de cada tabla, esto se hace con las funciones SYS(5) "Devuelve la unidad de disco en que te encuentras" y SYS(2003) "Devuelve el directori en que te encuentras" asi que crea una tabla con los campos MESES y RUTA en donde MESES almacena los nombres de los meses o periodos anteriores, y RUTA la ruta de acceso a las bases de datos de cada uno omitiendo la unidad de disco Ej.

MESES RUTA
Enero \MISISTEMA\ENERO
Febrero \MISISTEMA\FEBRERO

Etc,.

Cuando quieras accesar a los datos de enero, perimite al usuario seleccionar de alguna manera el mes, despues busca el registro del mes en esta tabla y almacena los datos de la ruta en una variable Ej. vRuta; antepone a esta variable la unidad de disco en que trabajas (Esto te permite que te funcione en cualquier unidd), con SYS(5) y tendras:

SELECT 1
USE SYS(5)+&vRuta+"Tabla1.dbf"
SET ORDER TO TAG xxxxx

SELECT 2
Use Tabla2.dbf
SET ORDER TO TAG xxxxx

SELE 3
USE SYS(5)+&vRuta+"NombreTabla3.dbf"
SET ORDER TO TAG xxxxx

Etc.,


Espero te ayude, escribeme si no quedastes claro.

  Respuesta:  Cesar Alberto Lainez Jimenez
Yo he hecho lo mismo y si me funciona, me imagino que lo que te pasa es que fox busca primero los dbf en el directorio actual y si no los encuentra los busca en el path especificado.
Cualquier duda escribeme, con gusto te ayudo.
Suerte