'
' © JM. :: Hecho en Ronda
'
'
' Procedente de...
'
'______________________________________________________________________
'
SUB Compacta
DIM registro AS tipopersona
numregS = (LOF(1) / LEN(registro)) 'Calculamos cuantos registros hay
AbreArchivo "Agenda.tmp" 'Creamos archivo temporal para ir copiando
'registros si no est n borrados y quedarnos
'solo con los que sirven.
CLS
PRINT , "COMPACTAR BASE DE DATOS"
PRINT
PRINT "Compactando..."
PRINT
n1 = 1 'Contador para recorrer archivo original
n2 = 1 'Contador para recorrer archivo nuevo
WHILE n1 <= numregS
GET #1, n1, registro
IF registro.nombre <> SPACE$(LEN(registro.nombre)) OR registro.direccion <> SPACE$(LEN(registro.direccion)) OR registro.telefono <> SPACE$(LEN(registro.telefono)) OR registro.edad <> -1 THEN
'Si el registro no est vac¡o lo copiamos al nuevo fichero
PUT #2, n2, registro
n2 = n2 + 1 'Y aumentamos su contador
END IF
n1 = n1 + 1 'aumentamos el contador del fichero original siempre
WEND
CLOSE 'Cerramos LOS DOS archivos
KILL "Agenda.dat" 'Borramos el archivo viejo
NAME "Agenda.tmp" AS "Agenda.dat"'Renombramos el temporal como "Agenda.dat"
AbreArchivo "Agenda.dat" 'Abrimos para seguir normalmente con el programa
'ahora sacamos un mensaje para terminar
PRINT
PRINT "La base de datos ha sido compactada"
SLEEP
END SUB

No hay comentarios:
Publicar un comentario