Validar Base de Datos

812 views
Skip to first unread message

Unico

unread,
Mar 1, 2009, 2:02:04 PM3/1/09
to Mundo Visual FoxPro
Hola a Todos y exitos en sus labores, deseo que me orienten si existe
alguna forma de que al iniciar una aplicacion exista una rutina que
verifique de que todos las tablas .dbf esten correctras ?

De antemano muchas gracias

eduardo

unread,
Mar 3, 2009, 3:15:36 AM3/3/09
to Mundo Visual FoxPro
Intentaste con Validate Database ?
Saludos
Eduardo

Unico

unread,
Mar 3, 2009, 1:34:14 PM3/3/09
to Mundo Visual FoxPro

muchas gracias, eduardo x semejante ayuda!!!!!, las dudas que tengo es
que me avisaria por un mensaje si encuentra datos erroneos? si
encuentra una tabla o varias dañadas las repararia?.

de nuyevo gracias por tu ayuda, espero podras responder mis preguntas


Gerardo

unread,
Mar 3, 2009, 7:10:11 PM3/3/09
to Mundo Visual FoxPro
Hola, prueba con el siguiente código, lo único que debes resolver es
si el sistema se ejecuta en red, ya que si un usuario ya lo está
ejecutando no va a poder abrir Exclusive las tablas.
El error que capturo es el 2091: La tabla "nombre" está dañada. Se
debe reparar antes de volver a utilizarla. (Error 2091)
Espero te ayude,
saludos, Gerardo.

LasTablas= ADIR(vl_Tablas,'*.dbf')

FOR nCount = 1 TO LasTablas
TRY
USE vl_Tablas(nCount,1) EXCLUSIVE
CATCH TO oErr
IF oErr.ErrorNo=2091
set tablevalidate to 0
use vl_Tablas(nCount,1) exclusive
lcColumnName = Substr(Sys(2015),1,10)
alter table vl_Tablas(nCount,1) add column (lcColumnName) c(1)
alter table vl_Tablas(nCount,1) drop column (lcColumnName)
REINDEX
use
set tablevalidate to 3
ENDIF
FINALLY
ENDTRY
USE
ENDFOR

eduardo

unread,
Mar 4, 2009, 7:20:21 AM3/4/09
to Mundo Visual FoxPro
No hacia falta la ironía .... Simplemente iba al principio para darte
una ayuda si fuera posible ..... Analiza la rutina que te pasó Gerardo
que es la que te va a permitir saber si las tablas tienen un error (de
registros o indices) ...... En realidad tiene el mismo efecto que el
Validate Database .... La Opcion Recover (validate database <bd>
recover) recupera las tablas dañadas (no siempre, pero en general
funciona) pero hay que ejecutarlo desde el comando de fox, o sea que
no te es util en tiempo de ejecucion
Una opcion que hemos usamos en algunos casos es generar una copia de
la estructura de la tabla dañada con sus indices a una tabla dañada
(la rutina anterior te permite capturar el nombre), e ir copiando
registro por registro la tabla dañada verificando que los campos
tengan valores válidos (para evitar la conocida 'basura' de un corte
de luz por ejemplo) y luego reemplazar la tabla dañada por la copia
dentro de la tabla dañada ... Es trabajoso pero funcionaba .... Pero
además no es normal encontrar tablas dañadas, salvo circunstancias muy
especiales.
Creo (volviendo a tu pregunta) que no hay ningún comando que por si
solo (al menos en tiempo de ejecucion) recupere tablas dañadas

Unico

unread,
Mar 4, 2009, 12:44:15 PM3/4/09
to Mundo Visual FoxPro
les agradezco encarecidamente a Eduardo y Gerardo por su ayuda,
gracias por el codigo lo pondre en practica.

Muchas gracias por su tiempo y dedicacion!!!!!!!!!

Ricardo Natella

unread,
Mar 5, 2009, 10:58:54 AM3/5/09
to mundovis...@googlegroups.com
CMREPAIR es una aplicación que te permite reparar cualquier tipo de tablas (DBF) y además puedes invocarlo desde adentro del programa para que se ejecute en determinado momento y puedas hacer una reparación automática.
Dependiendo del tipo de error es mas o menos efectivo.
Puedes descarga esta aplicación del siguiete link:

http://www.portalfox.com/index.php?name=Downloads&req=viewdownloaddetails&lid=22

Saludos.

-----Mensaje original-----
De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Unico
Enviado el: miércoles, 04 de marzo de 2009 15:44
Para: Mundo Visual FoxPro
Asunto: [Mundo Visual FoxPro] Re: Validar Base de Datos
Reply all
Reply to author
Forward
0 new messages