Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/01/2012, 14:14
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: dbf registros eliminados se muestran en mysql

El primer problema que tienes es que Fox no es un DBMS, es apenas un manejador de tablas. Sus recursos son muy limitaos, como sin dudas te habrás dado cuenta, y además sus métodos inseguros y poco eficientes.
Pero lo más importante en tu caso es que la forma de manejar las cosas es muy diferente entre ambos (fox y MySQL). El borrado es una muestra del caso.
En los DBMS, a diferencia de los archivos .dbf, el borrado es físico, por lo que un DELETE consolidado hace desaparecer realmente a los registros, mientras que Fox lo que hace es agregarle una "marca" de borrado, pero no lo selimina hasta que las tablas efectivametne no son optimizadas. Es decir que hace lo que se denomina un "borrado lógico", no físico.
Pero cuando importas un DBF a un DBMS como MySQL, la "marca" es interpretada como una columna especial, si mal no recuerdo de tpo VARCHAR, nada más. para MySQL eso no significa nada porque, como dije, un DELETE en MySQL tiene un efecto real.
Lo que se hace en este caso es simplemente realizar la consulta de modo que no devuelva los registros donde ese campo tenga esa "marca" (que si mal no recuerdo aparece como un asterisco), y nada más.
Cuando diseñas las bases de datos en un DBMS el problema del borrado físico se resuelve de un modo sencillo: Se le agrega a las tablas un campo adicional, usualmente de fecha o fecha y hora, que se usa para indicar la "Fecha de Baja", de modo que si es NULL, el registro está vigente, y si tiene una fecha, está "borrado", sin ser eliminado.
Pero eso se hace para evitar problemas de integridad referencial, y no por otras causas.

¿Se entiende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)