Como hago un inicio de año en una base de datos

Hola ante todo espero que estés bien.
Mi pregunta es la siguiente necesito que mi sistema limpie automático su base de datos para iniciar un nuevo año es decir que los registros del 2008 estén una base datos y los del 2009 en otra o por lo menos que estés la base de datos el 1 de enero como si el sistema fuese nuevo y ademas si las personas quieren consultar datos o en este caso reclamos porque es un sistema de reclamos lo puedan hacer. Yo vi un sistema que creaba una capreta dentro de la carpeta del sistema con el año y allí metía la data cada año automático y luegola gente podía consultar lo del año pasado también no se si me explique lo que quiero, por fa si me `podrías ayudar de antemano gracias.

1 Respuesta

Respuesta
1
Supongo que puedes usar algo así:
cDirBase = "Datos"
cNuevoDir = cDirBase + STR(YEAR(DATE()), 4) + "\"
SELECT TablaUno
        COPY STRUCTURE TO (cNuevoDir + "TablaUno") WITH CDX
SELECT TablaDos
        COPY STRUCTURE TO (cNuevoDir + "TablaDos") WITH CDX
Esto lo deberás hacer con cada tabla que quieras que se renueve.
Para lo de los "Históricos", al principio de tu programa incluye el "PATH" de donde vas a buscar las tablas. Por ejemplo para el año 2009:
SET PATH TO Datos2009\
Disculpa que no le había respondido me cortaron el internet y hasta ahora no tenia comunicación déjeme probar aunque no entiendo mucho.
Hola como estas corazón donde coloco esta sentencia en un programa o donde
Pues mira, si dices que tu tienes Bases de Datos y no Tablas Libres, deberás primero crear la nueva Base de Datos y después agregar las Tablas usando obviamente otra carpeta.
cRutaDatos = "\Datos\"  && Ruta de Datos
cNombreBD = "BaseDatos1"  && Nombre de tu Base de Datos
cAñoAct = LTRIM(STR(YEAR(DATE()))) + "\"
** Verifica si existe la carpeta del año actual, si no existe, crea la estructura
IF DIRECTORY(cRutaDatos + cAñoAct)
        ** Ya existe una carpeta con el año actual
        RETURN
ENDIF
cAñoPas = LTRIM(STR(YEAR(DATE()) - 1)) + "\"
** Verifica que exista la carpeta del año pasado para copiar la estructura
IF !DIRECTORY(cRutaDatos + cAñoPas)
        MESSAGEBOX("No existe la Carpeta del año pasado", 48, "Sistema")
        RETURN
ENDIF
** Crea la nueva carpeta y la Base de Datos
MD (cRutaDatos + cAñoAct)
CREATE DATABASE (cRutaDatos + cAñoAct + cNombreBD)
** Obtiene en un Arreglo todas las Tablas de la carpeta del año pasado
IF ADIR(aTablas, cRutaDatos + cAñoPas + "*.dbf") == 0
        MESSAGEBOX("No se encontraron archivos .dbf para copiar", 48, "Sistema")
        CLOSE DATABASES
        RETURN
ENDIF
nNumTablas = ALEN(aTablas, 1)  && Número archivos .dbf encontrados
** Copia cada una de las Tablas encontradas al nuevo directorio,
** incluyendo Índices cdx y las agrega a la nueva Base de Datos
FOR nCont = 1 TO nNumTablas
        USE (cRutaDatos + cAñoPas + aTablas[nCont, 1]) IN 0 ALIAS ACopiar
        SELECT ACopiar
        COPY STRUCTURE TO (cRutaDatos + cAñoAct + aTablas[nCont, 1]) WITH CDX ;
                DATABASE (cRutaDatos + cAñoAct + cNombreBD)
        USE IN ACopiar
ENDFOR
** Se cierran las Bases de Datos
CLOSE DATABASES
SET DATABASE TO (cNombreBD)
Close databases
MESSAGEBOX("La estructura de la Base de Datos ha sido copiada..", 64, "Sistema")
.. Algo así.
Corazón disculpa que no te había respondido estaba enferma, corazón me da errores la sentencia creo que no lo supe hacer me podrías envir un ejemplo a mi correo es [email protected]. he visto sistemas de viosual fox que tiene eun formulario que dice crear nuevo año.
Ya te lo envié..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas