Foros del Web » Programando para Internet » ASP Clásico »

Pack en ASP para Fox o Dbase

Estas en el tema de Pack en ASP para Fox o Dbase en el foro de ASP Clásico en Foros del Web. alguien sabe como hacer un Pack desde ASP's para una BD de Fox o Dbase? explico cuando uno hace un SQL con un DELETE ejm: ...
  #1 (permalink)  
Antiguo 17/12/2001, 16:12
Avatar de akela  
Fecha de Ingreso: septiembre-2000
Ubicación: Frente a la compu
Mensajes: 660
Antigüedad: 23 años, 9 meses
Puntos: 2
Pack en ASP para Fox o Dbase

alguien sabe como hacer un Pack desde ASP's para una BD de Fox o Dbase?

explico cuando uno hace un SQL con un DELETE ejm:

"DELETE FROM ....


el Fox no borra sólo marca y para liberar espacio hay que hacer un pack

alguien sabe?
  #2 (permalink)  
Antiguo 17/12/2001, 20:18
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 7 meses
Puntos: 655
Re: Pack en ASP para Fox o Dbase

No se puede hacer un pack porque para lograr eso la tabla debe estar abierta de modo exclusiva y como va a estar interactuando con otros usuarios, no se va a poder.

Solución que hice para lograr un resultado efectivo:

1) A las tablas le agregue un campo adicional llamado BORRADO Tipo Lógico (Boolean) y a todos los registros activos le muevo en ese campo un .F. para indicar que NO esta borrado.

2) Vuelvo a generar los índices para cada tabla pero tomando en cuenta los que tengan le valor BORRADO en .F.

3) Para cada tabla genero un índice adicional al campo BORRADO donde sea igual a .T.

4) Lo anterior lo utilizo para que cuando se vaya a crear un registro nuevo, primero verifico si hay algún registro borrado y si es así, lo activo poniendo .F. en BORRADO y cambiando los valores anteriores por los nuevos. A eso se le llama reciclaje de registros.

5) Si después deseas realizar alguna depuración, puedes realizar un DELETE a todos los campos de todas las tablas cuyo valor del campo BORRADO sea igual a .T. y luego realizas el PACK . Para lo anterior, debes tener todas las tablas accesadas de modo exclusivo.

6) Si haces lo anterior, acomodas los SQL para que realice lo que necesites pero agregandole la clausula WHEN tabla.borrado = .F. .

A mi me a resultado a las mil maravillas y el reciclaje o reutilización de registros BORRADOS es más rápido que estar creando registros nuevos.

Ahí me cuentas como te fue y espero solucione tu problema.
;)
  #3 (permalink)  
Antiguo 17/12/2001, 20:27
yomero
Invitado
 
Mensajes: n/a
Puntos:
Re: Pack en ASP para Fox o Dbase

No le dijiste cómo realizar el pack (supongo que el quiere hacerlo desde código asp)

Saluditos
  #4 (permalink)  
Antiguo 17/12/2001, 20:37
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 7 meses
Puntos: 655
Re: Pack en ASP para Fox o Dbase

yomero, si lees bien lo que puse, te vas a dar cuenta que SI puse la forma en que podría realizar el PACK pero tendría que tomar todas las tablas en modo EXCLUSIVO. Por esa razón le puse esa alternativa de borrado simulado sin hacer DELETE, que todos los registros existan y reutilice los registros con el campo BORRADO = .T.
  #5 (permalink)  
Antiguo 14/01/2002, 14:37
Avatar de akela  
Fecha de Ingreso: septiembre-2000
Ubicación: Frente a la compu
Mensajes: 660
Antigüedad: 23 años, 9 meses
Puntos: 2
Re: Pack en ASP para Fox o Dbase

pues fijense que si se puede hacer un PACK a una tabla de fox y bueno esa idea del borrado logíco creo que es trabajar doble porque es lo que hace fox cuando usas un DELTE FROM ....

le pone un * al campo para marcarlo como borrado y al hacer el pack pues hasta entonces se hace el borrado físico.
  #6 (permalink)  
Antiguo 14/01/2002, 14:42
yomero
Invitado
 
Mensajes: n/a
Puntos:
Re: Pack en ASP para Fox o Dbase

Ajá y ¿cómo se hace el pack entonces? nunca lo dijiste (lógicamente desde ASP)

Saluditos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:27.