* ******************************************************************************************************************
* Programa : Fechas.prg
* Objetivo : Duplicar registros con modificación de la fecha.
* Autor : Isaías Bórquez
* E-Mail :
[email protected]* Localidad : Hermosillo, Sonora, México.
* ******************************************************************************************************************
* Puedes sustituir los números del año con variables para utilizar el programa en otras oportunidades y, en años
* bisiestos.
* Hallarás los datos de la estructura de la tabla, para que hagas pruebas con el código, antes de usarlo en alguna
* aplicación.
* ******************************************************************************************************************
CLEAR
* Activa el formato de cuatro dígitos para el año: 05 => 2005.
SET CENTURY ON
* Define el formato de fecha. En este caso será dd/mm/aaaa.
SET DATE TO FRENCH
* Abre la tabla a utilizar
* Los campos son:
* nombre= tipo: caracter; longitud: 38.
* fecha = tipo: fecha; longitud 8.
IF NOT USED('fechas')
SELECT 1
Use fechas.DBF
ENDIF
* Inicialización de variables
STORE DTOC(DATE()) TO chrfecha && Almacena la fecha en formato de caracter.
STORE RECCOUNT() TO fda && Almacena el total de registros de la tabla, que serán leidos.
FOR i = 1 TO fda && Lee la totalidad de los registros de la tabla.
GO RECORD i
IF RIGHT(DTOC(fechas.fecha),4) = '2005' ; && Busca valores de año igual a 2005.
.AND. NOT (MONTH(fechas.fecha) = 2 AND DAY(fechas.fecha) = 29)
SCATTER MEMVAR && Copia hacia la memoria el registro activo.
STORE DTOC(fechas. Fecha) TO chrfecha && Convierte la fecha a formato de caracter: '13/12/2005'
* La siguiente instrucción realiza la sustitución de 2005 por 2006 y, después, convierte el resultado
* De formato de carácter a fecha y actualiza el valor de la variable de memoria m.fecha.
STORE CTOD(STUFF(chrfecha, 7, 4, '2006')) TO m.fecha
INSERT INTO FECHAS.DBF FROM MEMVAR && Inserta un nuevo registro en la tabla con los valores que se modificaron.
Endif
Endfor
Browse
Close all
Cancel