FoxPro/Visual FoxPro - Record is out of range

   
Vista:

Record is out of range

Publicado por Martin (1 intervención) el 20/05/2015 15:29:45
Buenos días! Una consulta para ver si puedo capturar el siguiente error. Hay una tabla con índice roto, si la abro por Fox Pro, voy al últimoregistro, hago un set order to nombre_indice y hago clic en brow me tira "Index does not match the table. Delete the index file and re-create the index".

Ahora si hago exactamente lo mismo y ejecuto la aplicación no me da error

sele nombre_tabla
set order to nombre_indice
go bottom
brow

Ahí no me muestra error y me puedo mover por todos los registros sin que de error. Luego salgo del brow, continúo pero NO graba en la tabla, ya que el índice está roto.

¿Cómo puedo capturar el error?

Desde ya, 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
Imágen de perfil de Mauricio Antonio

Record is out of range

Publicado por Mauricio Antonio (1368 intervenciones) el 20/05/2015 16:08:42
No te cuesta nada y te ahorra muchos dolores de cabeza: Elimina el indice y recrealo de nuevo....
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

Record is out of range

Publicado por Martin (2 intervenciones) el 20/05/2015 18:16:55
Es que es lo que hago. Pero la idea es poder detectar el problema para si el indice está roto aparezca un mensaje: "Indice roto", porque sino hoy en día permite grabar, no tira ningún error y en la base no se genera el registro!
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

Record is out of range

Publicado por Ernesto (4632 intervenciones) el 25/05/2015 17:45:24
REVISA EL SET "TABLEVALIDATE"



SET TABLEVALIDATE TO 0

Este comando es la clave para solucionar tu problema. SET TABLEVALIDATE TO 0 desactiva la validacion, permitiendote abrie el supuesto DBF dañado
Lo recomendable es agregar un registro en blanco al final y si deseas lo eliminas (recall)
Mandas un PACK
Un REINDEX
CLOSE ALL (cerramos los DBF)
Luego volvemos a activar la validacion SET TABLEVALIDATE TO 1 y listo.


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

Record is out of range

Publicado por Martin (2 intervenciones) el 25/05/2015 18:00:41
Hola Ernesto, lo intentaré para ver si se soluciona con eso. Muchas gracias!

Por ahora encontré una posible solución que devolvió error por lo que podría controlar el error. Hice así:

En la mayoría de las pantallas se abre con un índice, entonces lo primero que hago es llamar a una función que envía el nombre de la tabla y la dirección completa así la abro con un alias (again alias) sin order to (sin índice), luego voy al último registro, guardo en una variable el número de registro (recno()) y luego voy a la tabla ordenada por el índice y ahí hago un go al recno() entonces me devuelve el error!

Los contaré el martes si pude solucionar el error con lo que me ofreciste Ernesto.
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