Explorar la transferencia de información entre tablas en FoxPro es fundamental para cualquier persona que se dedica a la manipulación de bases de datos. FoxPro, aunque no sea un lenguaje de programación tan popular en estos días, aún sigue siendo muy útil para ciertos propósitos, tales como la manipulación rápida de grandes volúmenes de datos.
En esta ocasión, el propósito principal es la duplicación de registros de una tabla a otra, lo que se puede hacer de varias maneras en FoxPro. Veamos algunas de estas tácticas.
Uso de APPEND FROM
El comando APPEND FROM es útil para copiar todo el contenido de una tabla (origen) a otra tabla (destino). El comando COPY TO puede ser usado para duplicar una tabla, pero la diferencia es que COPY TO creará una nueva tabla, mientras que APPEND FROM añadirá los registros a una tabla existente.
USE Clients Shared APPEND FROM Suppliers FOR Region = 'North'
En el código anterior, estamos seleccionando la tabla ‘Clients’ y luego anexando todos los registros de la tabla ‘Suppliers’ que tienen ‘North’ en el campo ‘Region’.
Uso de INSERT INTO SELECT
Otra estrategia para transferir datos entre tablas en FoxPro es utilizar la sentencia INSERT INTO SELECT. Este método es especialmente atractivo cuando necesitas más control sobre qué registros se copian.
INSERT INTO Clients (ID, Name, City) SELECT Suppliers.ID, Suppliers.Name, Suppliers.City FROM Suppliers WHERE Suppliers.Region = 'South'
Aquí, se seleccionan registros de la tabla ‘Suppliers’ donde ‘Region’ es ‘South’, y luego se insertan en la tabla ‘Clients’. Se copian sólo los campos ‘ID’, ‘Name’, y ‘City’.
Uso de SCATTER y GATHER
Este sistema involucra los comandos SCATTER y GATHER. Ambos comandos son útiles para trabajar con registros individuales. Por ejemplo, puedes copiar un registro de una tabla a otra con SCATTER NAME y GATHER NAME.
USE Suppliers Shared SCATTER NAME oRec USE Clients Shared APPEND BLANK GATHER NAME oRec
El comando SCATTER guarda el registro actual en un objeto (oRec en este ejemplo). Luego, usamos la tabla ‘Clients’, añadimos un registro en blanco con APPEND BLANK, y finalmente usamos el comando GATHER para mover los datos desde el objeto al registro blanco recién creado.
Para transferir más de un registro, podemos implementar un bucle DO WHILE que moverá los registros uno por uno.
USE Suppliers Shared DO WHILE .NOT. EOF() SCATTER NAME oRec USE Clients Shared APPEND BLANK GATHER NAME oRec USE Suppliers Shared SKIP ENDDO
Este bloque de código continuará hasta que alcance el final de la tabla ‘Suppliers’.
Como conclusión, transpolar registos en FoxPro es un proceso que aunque pueda parecer complicado, en realidad no lo es si se entiende la lógica de sus comandos. En el futuro, no dudes en referirte a este post siempre que necesites recordar cómo manejar y transpolar datos de una tabla a otra en FoxPro.