La Web del Programador: Comunidad de Programadores
 
    Pregunta:  442 - INTEGRIDAD DE BASES DE DATOS EN FOXPRO 2.6 DOS
Autor:  Rodrigo Elhaibe
Necesito saber como puedo recuperar una Tabla (.dbf) cuando tengo un corte de luz y los programas estan abiertos. Cuando Ocurre esto, me tira un mensaje como el siguiente:
´ Is Not a database file ´ (a vece me da la ocion de ignora pero a veces NO, cuando ignoro, me muestra la tabla, el problema es cuando no me da la ocion de ignorar).
El Visual FoxPro 5.0 las recupera automaticamente pero el 2.6 para DOS NO lo hace.
desde ya muchas gracias

  Respuesta:  HUGO TOLENTINO
hay un programa de las norton utilitis que lo hace
se llama filefixer y eso las recupera

  Respuesta:  Oscar Raul Ccanto Godoy
sabes amigo:

Para reparar los archivos, el fox tiene un utilitario que es el fixfox, te permitira reparar tus tablas:

c:>fixfox <nombre de la tabla+extension> <Enter>
Ejemplo

c:>fixfox cliente.dbf

Suerte
Saludos

  Respuesta:  FRANCISCO STUVEN
He hecho todo eso, es mas actualmente uso el Foxfix que detecta errores de corrupcion de tablas, pero lo mejor es hacer un programa que abra las tablas en Visual Fox 5.0 y que borre los indices y que las indexe nuevamente (no reindexar, crear indices nuevos). Paremitriza el programa asi te sirve para todas las aplicaciones en fox 2.6.

Si necesitas codigo avisame.

Saludos
Francisco

  Respuesta:  Luis Puican
En esos casos la forma mas facil es carga el Excel y abre tu tabla, en tipos de archivo selecciona dbase III una vez que la abra verifica si se malogro en contenido de la tabla y despues grabada con otro nombre.
cierra tu excel y abre la tabla ya desde tu foxpro y problema solucionado..
Espero que te sirva.

  Respuesta:  Jayme Andrade
Para recuperar tus bases de datos dañadas debes mantener siempre un respaldo Bases mas indices, en otro directorio, ademas una segunda copia.

Ejemplo:
c:\directorio a\ clientes.dbf dañado

c:\directorio b\
dentro de fox

use c:\directorio b\clientes index clientes
set dele on

append from c:\directorio a\clientes

si todo sale bien

primero borras las bases del directorio A (Respaldar por si)

clientes.dbf
clientes.cdx o idx

Copiar bases del Directorio B al Directorio A

Si no puedes abrir con Fox, Utiliza el foxBase, o Debase

Suerte

  Respuesta:  Renato vargas
Utiliza el FILEFIX de Norton para DOS y sigue los pasos que te indica y podras recuperar tu tabla.

Saludos

  Respuesta:  Cesar Venegas
Cuando eso me ocurre lo que hago es borrar el archivo indice de la tabla luego le genero el cdx nueva mente. me funciona para la mayoria de las veces

  Respuesta:  Fabrizio Morocho
Amigo, yo he pasado por todo eso, pero lo mas facil y rapido es utilizando el ms-excel, abres el archivo dañado y luego lo guardas con el mismo nombre pero con formato dbase IV. eso es todo.

saludos

  Respuesta:  Daniel Marte
Tienes que ejecutar un programa llamado sfix.exe dentro del directorio con el problema, y este recupera cualquier base de datos con problemas, luego solo tienes que abrir la tabla y reindexarla, adios

  Respuesta:  EDUARDO GARRIDO
SI EXISTE UNA SOLUCION:
DEBES TENER UN PROGRAMITA QUE SE LLAMA FIXFOXPO CUYA SINTAXIS ES:

FIXPOXPO (RUTA)(NOMBRE DE ARCHIVO.DBF)
Y ESO ES TODO , SE ARREGLA EL ARCHIVO Y NO SE PIERDE EL ULTIMO REGISTRO

YO LO TENGO TE LO PUEDO ENVIAR POR E MAIL

  Respuesta:  eleazar limones montoya
lo unico que tienes que hacer es entrar al foxplus
y abrir el archivo dañado y luego le das la instruccion PACK
ESO TE LO CORRIGE.

  Respuesta:  Foxito
Se que el Norton 8.0 para DOS tiene un tools que te permite recuperar las tablas DBF pero no los campos MEMO ni IDX o CDX. Mejor algo que no tener nada.

  Respuesta:  Octavio Rodríguez
Mira compañero todo lo que te han dado como respuesta yo lo hacia pero sabes todo eso es un poco laborioso a como lo hago actualmente, consiguete el programa FOXFIX.EXE (si no lo tienes mandame un mensaje al correo), este te corrige el problema sin hacer tanto borlote, solo lo copias donde tienes los datos lo ejecutas y listo te corrige todo(solo DBF).

  Respuesta:  gonzalo ortiz de urbina
prueba la siguiente rutina debes pasarle el nombre de la tabla
en fox 2.5 para dos trabaja bien

pRAMETER m.FILE
SET DEBU ON
SET STEP ON
PRIVATE m.FILE, m.HEAD, m.REC, m.RECSIZE, n, x1, x2, x3, m.REST
clear
IF !('.'$m.FILE)
m.FILE=m.FILE+'.DBF'
ENDIF
IF ADIR(x,m.FILE) > 0
n=FOPEN(m.FILE,2)
IF n<0
WAIT 'El archivo '+m.FILE+' no puede abrirse ' WINDOW
RETURN
ENDIF
=FSEEK(n,8)
x1=ASC(FREAD(n,1))
x2=ASC(FREAD(n,1))
? 'x1= '+STR(x1,9)
? 'x2= '+STR(x2,9)
m.HEAD=x1+x2*256
? 'm.head= '+STR(m.head,9)
wait
=FSEEK(n,10)
x1=ASC(FREAD(n,1))
x2=ASC(FREAD(n,1))
m.RECSIZE=x1+x2*256
m.REC=IIF(m.RECSIZE>0,INT((x(1,2)-(m.HEAD+1))/m.RECSIZE),0)
? 'm.recsize= '+STR(m.recsize,9)
? 'm.rec= '+STR(m.rec,9)
wait
=FSEEK(n,4)
x1=ASC(FREAD(n,1))
x2=ASC(FREAD(n,1))
x3=ASC(FREAD(n,1))
m.RECCOUNT=X1+X2*256+X3*65536
? 'm.reccount= '+STR(m.reccount,9)
wait
IF m.RECCOUNT # m.REC
x3=INT(m.REC/65536)
m.REST=MOD(m.REC,65536)
x2=INT(m.REST/256)
x1=MOD(m.REST,256)
=FSEEK(n,4)
=FWRITE(n,CHR(x1))
=FWRITE(n,CHR(x2))
=FWRITE(n,CHR(x3))
ENDIF
=FCLOSE(n)
ENDIF
RETURN

  Respuesta:  alejandro yupanqui mateo sanchez
Cuando pasa esto puedes usar dbase para abrir la base de datos, luego la guardas otra vez y listo foxpro lo podra abrir

  Respuesta:  Foxito
Hola:
Puedes emplear los utilitarios DBU del Clipper o uno similar. Sin embargo el mas facil de conseguir es el FileTools de Norton, que permite recuperar distintos archivos de programas en DOS. Solo ten cuidado con los archivos memo (no son reparados) y con los IDX o CDX (deberan ser regenerados).

  Respuesta:  Carlos Antonio Tosi Moreno
la forma mas sencilla que he encontrado, simplemente usa mfoxplus o cualquiera de la versiones antiguas de foxpro, abre la tabla normalmente y copia a otra base, o con otro nombre, borra la original y renombrala. Esto siempre funciona y es facil de hacerlo.

  Respuesta:  Alonso Salazar
Pulsa en resp442.txt para ver la respuesta. La hemos colocado en un archivo de texto por el gran tamaño de la respuesta.

  Respuesta:  Esteban
Debes recuperar la cabecera del dbf con algun programa( filefix, del Norton ), y despues create un dbf nuevo con el mismo nombre y traspasa toda la data a este archivo nuevo y reindex la dbf.

  Respuesta:  Manuel
HOLA AMIGO..

ENTIENDO PERFECTAMENTE A QUE TE REFIERES. YO ESTADO CON MUCHOS PROBLEMAS CON ESTO, PERO TODOS LOS SOLUCIONE CON UN PROGRAMA.

DBU.EXE. ESTE PROGRAMA PUEDE ABRIR LA BASE DE DATOS DAÑADA SIN PROBLEMA, BAJAS HASTA EL ULTIMO REGISTRO Y LO MARCAS PARA BORRAR DAS UN PACK QUE TRAE EL PROGRAMA Y LISTO, NO PASO NADA.

OJO !!! SOLO PIEDES EL ULTIMO REGISTRO.

MANDAME UN E-MAIL PARA SABER COMO TE FUE..

UN AMIGO DE COSTA RICA...


  Respuesta:  Josue
Utilizando una version de foxplus, pon en uso la base de datos dañada y modifica su estructura ( modify estructure) y luego solo presiona ctrl+w para grabar y listo tu problema esta solucionado.

NO DEBES HACER CAMBIOS A LA ESTRUCTURA ORIGINAL DE LA BASE