powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Восстановление DBF - срочно нужна помощь!!!!
3 сообщений из 3, страница 1 из 1
Восстановление DBF - срочно нужна помощь!!!!
    #33967111
Poliantsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация: испортился DBF файл - перестал открываться и пишет не табличный файл. Размер этого файла стал просто огромным из 1,4 Мб он превратился в 2,6 Гб . Судя по всему испорчен заголовок.
О ручном восстановлении речь не идет, потому как на таком размере виснут все просмотрищики
Прога WINDBFVIEW, которая восстанавливает на маленьких объемах тут тоже только определяет поврежденный заголовок, но не восстановила.
Может у кого были аналогичные ситуации... помогите плиз - очень нужно!!!
...
Рейтинг: 0 / 0
Восстановление DBF - срочно нужна помощь!!!!
    #33967371
Со старых запасов.
Может поможет ?

PROC TFD
para n_f
private all like mas
if ! '.DBF' $ upper(n_f)
n_f=trim(n_f)+'.dbf'
endif
if ! file(n_f)
retu
endif


h=fopen(n_f)

if h=-1
retu .f.
endif
mas=fseek(h,0,2)
=fseek(h,8,0)
sl=fread(h,4)
l_h=asc(subst(sl,2,2))*256+asc(subst(sl,1,2))
l_r=asc(subst(sl,4,2))*256+asc(subst(sl,3,2))
=fseek(h,0,0)
nz_act=(mas-l_h-1)/l_r
if nz_act<=0
nz_act=0
endif

hed=fread(h,l_h)

a1=subs(hed,7,1)
a2=subs(hed,6,1)
a3=subs(hed,5,1)
n_z=asc(a1)*256*256+asc(a2)*256+asc(a3)

if n_z=nz_act
=fclose(h)
retu .t.
endif

=fclose(h)

if netf(n_f,2)

wait wind ;
'Разрушение файла базы данных - '+upper(n_f)+chr(13)+;
'производится попытка фосстановить файл.'+chr(13)+;
'БУДЕТ УТЕРЯНО ПОСЛЕДHИХ ВВЕДЕHHЫХ '+str(n_z-nz_act,4)+' ЗАПИСЕЙ'

h=fopen(n_f,2)
clen=cnzap(nz_act)
hed=subst(hed,1,4)+clen+subst(hed,8)
=fseek(h,0,0)
nb=fwrite(h,hed)
yc=fclose(h)
RETU(nb<>0 and yc)
else
wait wind ;
' Разрушение файла базы данных - '+upper(n_f)+chr(13)+;
'Требуется монопольный режим работы для восстановления данных'+chr(13)+;
'Запустите АРМ на одной машине'+chr(13)+;
'БУДЕТ УТЕРЯНО ПОСЛЕДHИХ ВВЕДЕHHЫХ '+str(n_z-nz_act,4)+' ЗАПИСЕЙ !!!'
RETU TO MAINPROG
endif
*----------------------------------------------
funct cnzap
para np
a11=int(np/(256*256))
a12=int((np-a11*256*256)/256)
a13=np % 256


retu chr(a13)+chr(a12)+chr(a11)
*---------------------------------------------
PROC NETF
para fl,ds
if type('ds')='L'
ds=0
endif
RETU(fclose(fopen(fl+iif('.' $ fl,'','.dbf'),ds)))
*====================================
...
Рейтинг: 0 / 0
Восстановление DBF - срочно нужна помощь!!!!
    #33967883
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл DBF физически не может иметь размер более 2ГБ. Это системные ограничения даже не FoxPro, а формата DBASE.

Единственный путь - это ручной разбор информации, как обычного текстового файла. Скорее всего, там "приклеился" какой-то "хвост", который надо отрезать.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Восстановление DBF - срочно нужна помощь!!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]