FoxPro/Visual FoxPro - Índices.... Me pasó algo que me dejó descolocada

   
Vista:

Índices.... Me pasó algo que me dejó descolocada

Publicado por Andrea (325 intervenciones) el 15/04/2009 16:22:54
Hola a todos

Tengo un programa funcionando donde un "socio" debió eliminar algunos registros viejos.

Lo hizo desde el programa DBF Viewer, ya que no tiene conocimiento de VFP

Lo cierto es que físicamente los registros ya no estaban en la tabla pero seguían figurando en los índices porque me daba error de duplicación de claves (que volvieron a cero)

El problema se solucionó porque tuve que entrar a la base de datos (DBC), abrir el archivo en forma exclusiva y hacer un REINDEX y todo funcionó bien.

Mi duda es la siguiente: YO PENSABA QUE LOS REGISTROS SE REINDEXABAN AUTOMÁTICAMENTE CADA VEZ QUE UNO ABRÍA LA BASE DE DATOS (Open Database), ya que los índices quedan almacenados.

¿Esto no es así??? ¿Cómo lo puedo solucionar??

Muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Índices.... Me pasó algo que me dejó descolocad

Publicado por Marvin E. Pineda (75 intervenciones) el 15/04/2009 16:33:17
si tienes una tabla con un campo primary key y borras registros de esta tabla se borran a la vista del usuario pero aun asi quedan en la tabla y como el indice no tiene clausula o filtro aun los concidera entonces!!!, lo que podrias hacer es que al indice primario de la tabla indicarle un filtro como !deleted() asi no considerara los registros borrados (aunque no es una buena practica), lo otro seria, luego de borrar los registros abrir la tabla en modo exclusivo y aplicar un pack para que estos sean removidos del todo de la tabla

saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Índices.... Me pasó algo que me dejó descolocad

Publicado por guillermo (1 intervención) el 15/04/2009 16:46:37
yo te diria que en linea de programa o al salir de la aplicacion o al entrar hagas un reindex
lo unico que tenes que demanda esta operacion es que las tablas tienen que se exclusivas de quien oredene ese comando.
espero ser de ayda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Índices.... Me pasó algo que me dejó descolocad

Publicado por Andrea (325 intervenciones) el 15/04/2009 17:17:16
Gracias por el dato.
Lo que pasa es que en una red, poder abrir las tablas en forma exclusiva es un poco complicado, ya que siempre va a haber alguien que necesite mterse en el programa.

¿Será conveniente hacer un REINDEX externo?

Gracias

PD A Marvin le digo que el los registros están borrados físicamente (no solo lógicamente)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Índices.... Me pasó algo que me dejó descolocad

Publicado por kong (681 intervenciones) el 15/04/2009 19:12:16
hola.

en caso de que si se pudo acceder al archivo del DBF y haber borrado algun registro quiere decir que estuvo en la PC principal que aloja a la base de datos, y tuvo privilegios de administrador.

yo creo que, estando en la PC principal, se puede obligar a que ningun otro usuario pueda acceder a las tablas, obligar de que primero se realice un reindex antes de que otros usuarios puedan entrar..... podria ser que le pongas archivo banderas o algo parecido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Índices.... Me pasó algo que me dejó descolocad

Publicado por enrique (1041 intervenciones) el 15/04/2009 22:27:03
El tema es que el DBViewer abre la tabla y ya , no se fija si tiene un indice asociado o si la tabla pertenece a una base de datos.
Si quiere prueba lo siguiente toma un tabla que pertenezca a una Base de Datos y abrela con el DBViewer y veras que no hay problema; es mas copiala en otra ubicacion sin el indice o cdx y tambien la abrira.

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar