Tengo 6 campos de fecha en 6 diferentes tablas y deseo hacer una selección de la fecha más reciente de entre los 6 campos (es decir, de entre las 6 tablas), y al mismo tiempo pasarlos a una sola tabla. ¿Cómo puedo hacer ésto? Un ejemplo sería lo ideal. Gracias de antemano por la ayuda.
1 respuesta
Respuesta de falvarez
1
1
falvarez, VFP 7.0 y anteriores (6 años). Solamente soluciones de...
Estimado/a pitomase: La mejor forma es que tengas las 6 tablas indexadas por fecha en modo DESCENDENTE porque sino tendrás que hacer un "APPEND FROM" o un "SET FILTER" o un "SELECT QUERY", pero estos 3 procesos tardan mucho... En este ejemplo tengo 6 tablas iguales (que pueden ser distintas también) ordenadas por el campo fecha y con la siguiente estructura: Fecha d NRO_DOCU N 8 Luego realizo el siguiente codigo: SET EXCLUSIVE ON SET UNIQUE OFF * Ordeno las tablas por FECHA en forma descendente... USE TABLA1 ALIAS TABLA1 INDEX ON FECHA TAG TABLA1 DESCENDING USE TABLA2 ALIAS TABLA2 INDEX ON FECHA TAG TABLA2 DESCENDING USE TABLA3 ALIAS TABLA3 INDEX ON FECHA TAG TABLA3 DESCENDING USE TABLA4 ALIAS TABLA4 INDEX ON FECHA TAG TABLA4 DESCENDING USE TABLA5 ALIAS TABLA5 INDEX ON FECHA TAG TABLA5 DESCENDING USE TABLA6 ALIAS TABLA6 INDEX ON FECHA TAG TABLA6 DESCENDING * Creo una tabla temporal... CREA CURSOR CURAUX (FECHA D, DOCUMENTO N(8)) * Pongo SET NEAR en ON para que encuentre la fecha mas reciente... SET NEAR ON SELECT TABLA1 SEEK DATE() && Encuentro la fecha mas reciente en la TABLA1... SCATTER MEMVAR && Cargo en memoria el contenido de los campos... SELECT CURAUX && Agrego un nuevo registro en la tabla temporal... APPE BLANK REPLACE FECHA WITH M.FECHA REPLACE DOCUMENTO WITH M.NRO_DOC * Hago lo mismo con el resto de las tablas... SELECT TABLA2 SEEK DATE() SCATTER MEMVAR SELECT CURAUX APPE BLANK REPLACE FECHA WITH M.FECHA REPLACE DOCUMENTO WITH M.NRO_DOC * SELECT TABLA3 SEEK DATE() SCATTER MEMVAR SELECT CURAUX APPE BLANK REPLACE FECHA WITH M.FECHA REPLACE DOCUMENTO WITH M.NRO_DOC * SELECT TABLA4 SEEK DATE() SCATTER MEMVAR SELECT CURAUX APPE BLANK REPLACE FECHA WITH M.FECHA REPLACE DOCUMENTO WITH M.NRO_DOC * SELECT TABLA5 SEEK DATE() SCATTER MEMVAR SELECT CURAUX APPE BLANK REPLACE FECHA WITH M.FECHA REPLACE DOCUMENTO WITH M.NRO_DOC * SELECT TABLA6 SEEK DATE() SCATTER MEMVAR SELECT CURAUX APPE BLANK REPLACE FECHA WITH M.FECHA REPLACE DOCUMENTO WITH M.NRO_DOC * SELECT CURAUX && Muestro la tabla temporal Go top Brow normal Este ejemplo es la forma más rápida de hacer la selección en múltiples tablas. Espero que te sea de utilidad. SUERTE!
Muchas gracias falvarez. Tu respuesta es atinada. Como señalas, esta es la forma más rápida (y yo agragaría... más apropiada) de hacerlo.