Registros perdidos por problema de indices

18/08/2005 - 11:30 por Rolando Uculmana | Informe spam
Estimados amigos, espero alguien pueda ayudarme.

Estoy trabajando con vfp 6.0. Probe tambien con vfp 7 y el problema sigue.

Me ocurrió que en algun momento un archivo de índice se dañó. El daño se
hace evidente cuando se carga el TAG de la tabla y se recorre el archivo
manualmente, al pasar el puntero por ciertos registros de la tabla se
presenta el mensaje de error: EL INDICE NO CORRESPONDE A LA TABLA. ELIMINE
EL ARCHIVO DE INDICE Y VUELVA A CREARLO.

El problema es que si no hago esto, el programa no se da cuenta que el
indice esta mal y aparentemente sigue grabando de forma normal. Es decir
sigue aceptando operaciones que no dan ningun error pero luego al ver la
tabla los registros no se han grabado.

Lo mas curioso es que incluso la grabación de la tabla esta dentro de un
BEGIN TRANSACTION y la he puesto en buffer para actualizarla con un
TABLEUPDATE(), sin embargo el tableupdate no da ningun error. Incluso
luego de hacer el update hago un seek sobre la tabla al registro añadido y
supuestamente lo encuentra. También he hecho un select luego de hacer el
tableupdate y me muestra el registro, pero cuando se finaliza la
transacción solo los cambios en esa tabla que tiene el indice malo han
desaparecido. Lo unico que me ha funcionado para hacer saltar el error ha
sido poner un BROWSE luego de actualizar la tabla, pero no es una solución
muy simpatica.

Alguien tiene una forma de detectar ese tipo de fallas desde el inicio del
formulario para evitar perder información???

saludos,

Rolando Uculmana


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway

Preguntas similare

Leer las respuestas

#1 Luis María Guayán
18/08/2005 - 16:58 | Informe spam
Debes crear el índice nuevamente si está dañado.

Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos

"Rolando Uculmana" escribió en el mensaje
news:
Estimados amigos, espero alguien pueda ayudarme.

Estoy trabajando con vfp 6.0. Probe tambien con vfp 7 y el problema sigue.

Me ocurrió que en algun momento un archivo de índice se dañó. El daño se
hace evidente cuando se carga el TAG de la tabla y se recorre el archivo
manualmente, al pasar el puntero por ciertos registros de la tabla se
presenta el mensaje de error: EL INDICE NO CORRESPONDE A LA TABLA. ELIMINE
EL ARCHIVO DE INDICE Y VUELVA A CREARLO.

El problema es que si no hago esto, el programa no se da cuenta que el
indice esta mal y aparentemente sigue grabando de forma normal. Es decir
sigue aceptando operaciones que no dan ningun error pero luego al ver la
tabla los registros no se han grabado.

Lo mas curioso es que incluso la grabación de la tabla esta dentro de un
BEGIN TRANSACTION y la he puesto en buffer para actualizarla con un
TABLEUPDATE(), sin embargo el tableupdate no da ningun error. Incluso
luego de hacer el update hago un seek sobre la tabla al registro añadido y
supuestamente lo encuentra. También he hecho un select luego de hacer el
tableupdate y me muestra el registro, pero cuando se finaliza la
transacción solo los cambios en esa tabla que tiene el indice malo han
desaparecido. Lo unico que me ha funcionado para hacer saltar el error ha
sido poner un BROWSE luego de actualizar la tabla, pero no es una solución
muy simpatica.

Alguien tiene una forma de detectar ese tipo de fallas desde el inicio del
formulario para evitar perder información???

saludos,

Rolando Uculmana


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#2 Rolando Uculmana
19/08/2005 - 16:09 | Informe spam
Luis, garcias por tu pronta respuesta. Se que volviendo a crear el indice
se soluciona el problema inmediato, pero lo que realmente me preocupa es
cómo puedo detectar esto en el futuro. Por eso mi pregunta va a cómo
puedo hacer que cuando un indice esté dañado el sistema se detenga y no
permita que el usuario siga introduciendo transacciones que realmente no
se están grabando.

saludos,

Rolando Uculmana

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
#3 ricardo soto
19/08/2005 - 17:04 | Informe spam
Estimado, lo que yo he hecho es cuando todos los indices estan ok, ojalá
con la tabla vacia; creo una copia del archivo de indice estructural (osea
arch.cdx su copia arch1.cdx); luego en el formulario menu o programa creo
un botón que lo llamo reindexar con el siguiente código:

Do Reindexa

Procedure Reindexa

nRespue = Messagebox('Reindexar ? todos los usuarios deben cerrar...',4 +
32 + 256, 'ayuda')

Validate Database Recover

Close Database

If nRespue = 6
Close Tables All
Copy File tbcodigos1.cdx to tbcodigos.cdx
Use tbcodigos exclu
Reindex

me ha funcionado bien, en todos mis proyectos; cuidado si cuando se
modifica el indice, también deja actualizarse la copia.

Adios

Ricardo Soto



¡nada corre cómo un zorro!

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
#4 Rolando Uculmana
19/08/2005 - 23:49 | Informe spam
Estimado Ricardo. Gracias por tu consejo que voy a poner en práctica, pero
debo insistir en mi pregunta original. Conoces alguna forma de DETECTAR
daños en índices? Mi problema principal es que quiero evitar que el
sistema siga funcionando si se daña un archivo de índice.

He hecho pruebas con el archivo que se dañó y supuestamente si añado un
nuevo registro éste se crea normalmente, se graba la información, incluso
probé en modo buffer y actualicé la tabla con TABLEUPDATE() y lo raro del
caso es que el tableupdate devuelve .T. como si todo estaria ok.

Solo cuando vuelvo a abrir la tabla me doy cuenta de que los registros
supuestamente grabados no están. Cuando repongo el índice de un backup ya
graba normal.

Yo esperaba que al hacer el tableupdate el vfp lanzara un error. Al no
hacerlo el usuario sigue perdiendo transacciones y solo cuando nos damos
cuenta podemos regenerar los índices.

Esto me ha pasado hasta ahora solo una vez pero no me gustaría que me
volviera a pasar ya que es un gran riesgo para la integridad de la
información. Por eso mi necesidad de averiguar como detectar la falla a
tiempo para no perder información.

Saludos,

Rolando Uculmana


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#5 Ricardo Soto
24/08/2005 - 15:54 | Informe spam
Estimado:

Buena pregunta, las veces que me ha sucedido esto, VFP no permite ingresar
a las tablas, y listo; por tanto, debo recuperar el índice primero par
seguir ingresando datos.

La explicación debería entregarla alguien que maneje profundamente el
tema, a veces me encontrado con "cosas inexplicables" en VFP, pero las
hago de otra manera y el problema se me soluciona; luego mi angustia
termina.

Adios



¡Nada corre cómo un zorro, adelante adelante adelante VFP!


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida