Consultas en varias Bases

Hola,
Tengo un aplicativo que maneja el registro de estudiantes de una institución. Dicha institución maneja muchas sedes por lo cual el software crea una base de datos para cada una de ellas. De manera mensual necesito consolidar o unir los registros de todas las sedes y hasta el momento lo he hecho exportando a excel cada una de las bases a través de un prg llamado consulta_total; después las pego en un solo libro. Ahora la institución esta creciendo y el manejo manual se esta tornando extenso.
Quisiera saber de que manera puedo exportar todos los registros de todas las bases a través de una sola consulta teniendo en cuenta que el diseño de la Base es el mismo para todas las sedes (las mismas tablas, los mismos campos, etc). Cada base de una sede se almacena en una carpeta que tiene por nombre el código de la sede.
No se que tan viable sea pero de antemano agradezco su colaboración.
J.

1 Respuesta

Respuesta
1
Ese tipo de consulta la podes hacer con el comando UNION entre varios select, ejemplo
SELECT campo1, campo2 FROM rutasede1\tabla UNION (SELECT campo1, campo2 FROM rutasede2\tabla) INTO CURSOR consulta1
No estoy seguro de cuanto es el límite de comandos UNION que podes usar en un solo SELECT, pero hasta 10 podes seguro.
Salu2 y exitos!
Hola
Hasta donde se el comando UNION tiene un limite pero en mi caso las sedes son muchísimas, hablo de más de cien.
No se si puedas facilitarme algún ejemplo sobre este tema.
Agradezco de antemano su colaboración.
Éxitos.
Entiendo, en ese caso tendrías que armar una tabla con los nombres y rutas de archivos dbf. Y a través de ella ir armando la consulta.
EJ:
BASES.DBF (campo: CODIGOSUC I, TABLA C(200))
Llenas BASES.DBF con todas las tablas a agrupar en una consulta.
Luego, si las tablas de cada sucursal no tienen muchos registros unilas de la siguiente manera.
SELECT BASES
GO TOP
lcTabla = ALLTRIM(BASES.TABLA)
IF !FILE(lcTabla)
    WAIT WINDOW "LA TABLA NO EXISTE..."
    RETURN
ENDIF
SELECT * FROM lcTabla WHERE 1=0 INTO TABLE TMP_TODAS READWRITE
SELECT BASES
SCAN
    lcTabla = ALLTRIM(BASES.TABLA)
    IF !FILE(lcTabla)
        WAIT WINDOW "LA TABLA NO EXISTE..."
        LOOP
    ENDIF
    SELECT TMP_TODAS
    APPEND FROM &lcTabla
Endscan
Una vez hecho eso vas a tener todos los datos de todas las sucursales dentro de una misma tabla, recordá que es importante que tengas el campo sucursal o cede si necesitas diferenciar a que sucursal o cede pertenece cada registro.
En caso de que los datos sean muchos al APPEND FROM &lcTabla agregale FOR "condicion" siendo "condicion" al expresión de filtro que necesitás para tu consulta.
Salu2 y exitos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas