FoxPro/Visual FoxPro - AYUDA, DAÑO EN INDICES POR APAGONES

   
Vista:

AYUDA, DAÑO EN INDICES POR APAGONES

Publicado por Fernando (42 intervenciones) el 07/01/2010 18:10:48
Saludos colegas!

Tengo el siguiente problema. Trabajo en Visual Foxpro 9, SO Windows XP. Cada vez que hay cortez de luz (aca en Ecuador tenemos crisis electrica hasta febrero 2010) se daña el indices de la tabla principal, actualmente para reparlas estoy usando el CMREPAIR que es muy bueno.
Lo que necesito saber, es si hay alguna forma de abrir la tabla del indice dañado, hacer que se elimine el indice y volverlo a crear mediante codigo, creo que eso si se ha de poder hacer mediante codigo ya que el CMREPAIR logra abrir el archivo dañado y ese esta hecho en visualfox.
Intente abrir normalmente la tabla del indice dañado y muestra un mensaje de archivo corrupto y no permite manipular la tabla, tambien intente directamente elimiar el archivo CDX y copiarle otro encima, y no da resultado, creo que la unicaforma es haciendo que se abra la tabla dañada (no se como se hace eso) y que se vuelva a crear los indices.

Espero haber sido claro en lo que necesito, lo que intento es que el sistema sea autoreparable, que al volver abrir el sistema si detecta que una tabla esta averiada el indice, que lo elimine y lo vuelva a crear y carge el sistema sin problemas.

Fernando, Machala, Ecuador
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

AYUDA, DAÑO EN INDICES POR APAGONES

Publicado por Mauricio (1368 intervenciones) el 07/01/2010 20:50:55
Prueba esta rutina y puedes modificarla para que revise tus tablas y la que este corrompida puedas pasarle esta rutina!!!!!!
*---
*--- Programa para reparar tabla que da mensaje 'Not a Data File'
CLOSE TABLE ALL
WAIT WINDOW 'Si obtienes un Not a Database File, haz clic en Ignore' NOWAIT
USE articulo IN 0 EXCL && Reemplazar con el nombre de la tabla
WAIT WINDOW 'Esc para cancelar o cualquier tecla para continuar'
*---
Fh = FOPEN('articulo.dbf') && Reemplazar con el nombre de la tabla
=FSEEK(fh, 0,2) && Mueve el puntero al EOF
=FWRITE(fh, Space(123)) && Agrega un registro en blanco al final
=FCLOSE(fh) && Cierra la tabla
WAIT WINDOW 'Si puedes ver los datos, entonces se arreglo satisfactoriamente'
*USE articulo IN 0 EXCL
Go Bott
REINDEX
BROW
WAIT WIND 'Proceso finalizado....' time 2
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:AYUDA, DAÑO EN INDICES POR APAGONES

Publicado por Fernando (42 intervenciones) el 13/01/2010 21:31:49
Gracias Mauricio por la ayuda, voy a revisarlo y adaptarlo a lo que necesito, luego te vuelvo a escribir y te cuento como me fue.

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:AYUDA, DAÑO EN INDICES POR APAGONES

Publicado por Fernando (42 intervenciones) el 20/01/2010 18:57:05
Saludos Mauricio

Te comento que no se corrige el problema, estudie las funciones FOPEN(), FSEEK(), FWRITE(), lo probe de mil manera, las funciones me devuelven los valores positivo de haber logrado escribir en el archivo, pero el archivo no se arregla.

Talvez sea porque la solucion que me dice es para cuando vfox no reconoce al archivo como DBF, el cual no es mi caso, mi caso me sale un mensaje que el archivo dbf esta corrupto.

No tengo ni idea que comando usa el programa CMREPAIR para abrir un DBF corrupto y eliminarle el indice, eso es lo que yo necesito, que mi aplicacion abra el archivo dbf corrupto y elimine el cdx y lo vuelva a genera...... si logramos que haga eso BINGO, los sistemas los podemos hacer autoreparable y solucionamos el problema de los apagones...... estoy luchando hasta lo ultimo para seguir usando los DBF....... me niego a tener que migrar a otra base de datos......
VAMOS FOXPROSEROS..... TENEMOS QUE ENCONTRARLE UNA SOLUCION A ESTO!
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:AYUDA, DAÑO EN INDICES POR APAGONES

Publicado por Jose Casalino (94 intervenciones) el 09/08/2010 23:26:48
Yo vivo en Ecuador y lo que hice fue lo siguiente:

Supongamos que mi sistema esta en c:\sistema y mis tablas en c:\sistema\tablas, creo en una carpeta por ejemplo c:\sistema\bdmaestra una copai en blanco de los dbf y los cdx de mi sistema y cuando tengo alguna indice corrupto corro una opcion que me copia de bdmaestra el indice vacio, luego abro la base de datos y reindexo y LISTO.

Espero que te sirva, por experiencia en un sistema ya maduro o que tiene cierto tiempo activo los indices no se cambian tan seguido (aumentar , cambiar o eliminar indeices) por lo que esta solucion es bastante idonea y sencilla de implemenetar.

Jose Casalino
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