
Tenemos un repositorio de QVDs con ficheros históricos desde hace varios años Existe un qvd por cada añomes. El Cuadro de Mandos los lee todos cada vez que se recarga.
En un
momento dado, el origen de datos cambia e incluye un par de campos más que
deben mostrarse en la aplicación. Los nuevos QVDs incluirán estos campos, pero
¿cómo evitar que la recarga falle cuando vaya a buscar esos campos en los
ficheros históricos?
Existen
varias soluciones:
1.-
Modificar el script para que tenga en cuenta la fecha del .qvd y según esa
fecha, cargue los nuevos campos o no.
2.-
Modificar el script para crear una carga incremental de modo que una todos los
.qvd en uno solo. En cada nueva recarga el CdM leerá ese único .qvd, añadirá
nuevos campos cada vez que sea necesario y volverá a generarlo sobreescribiendo
el anterior. De este modo podríamos ir añadiendo nuevos campos siempre que lo
necesitemos.
3.-
Añadir esos nuevos campos vacíos a cada .qvd histórico. El siguiente script lo
hace:
SET vL.QVDPath =
.\Empleados*.qvd; //<--
Introducir aquí La ruta de los .QVDs de origen
FOR each File in filelist(vL.QVDPath)
dummy:
LOAD filename() as nombreFichero
FROM [$(File)] (qvd)
WHERE RECNO()=1;
Let NombreFichero = Peek('nombreFichero',0,'dummy');
Drop table dummy;
$(NombreFichero):
LOAD *,
'' AS nuevo_campo1,
'' AS nuevo_campo2 //Lista de campos nuevos
FROM [$(File)] (qvd);
Store $(NombreFichero) INTO [$(File)] (qvd);
Drop table $(NombreFichero);
NEXT File; // Siguiente fichero de entrada
FOR each File in filelist(vL.QVDPath)
dummy:
LOAD filename() as nombreFichero
FROM [$(File)] (qvd)
WHERE RECNO()=1;
Let NombreFichero = Peek('nombreFichero',0,'dummy');
Drop table dummy;
$(NombreFichero):
LOAD *,
'' AS nuevo_campo1,
'' AS nuevo_campo2 //Lista de campos nuevos
FROM [$(File)] (qvd);
Store $(NombreFichero) INTO [$(File)] (qvd);
Drop table $(NombreFichero);
NEXT File; // Siguiente fichero de entrada
Contenido .QVD Antes:
Contenido .QVD después
No hay comentarios:
Publicar un comentario