|
|
|
Восстановление DBF - срочно нужна помощь!!!!
|
|||
|---|---|---|---|
|
#18+
Ситуация: испортился DBF файл - перестал открываться и пишет не табличный файл. Размер этого файла стал просто огромным из 1,4 Мб он превратился в 2,6 Гб . Судя по всему испорчен заголовок. О ручном восстановлении речь не идет, потому как на таком размере виснут все просмотрищики Прога WINDBFVIEW, которая восстанавливает на маленьких объемах тут тоже только определяет поврежденный заголовок, но не восстановила. Может у кого были аналогичные ситуации... помогите плиз - очень нужно!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 10:17 |
|
||
|
Восстановление DBF - срочно нужна помощь!!!!
|
|||
|---|---|---|---|
|
#18+
Со старых запасов. Может поможет ? 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))) *==================================== ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 11:28 |
|
||
|
Восстановление DBF - срочно нужна помощь!!!!
|
|||
|---|---|---|---|
|
#18+
Файл DBF физически не может иметь размер более 2ГБ. Это системные ограничения даже не FoxPro, а формата DBASE. Единственный путь - это ручной разбор информации, как обычного текстового файла. Скорее всего, там "приклеился" какой-то "хвост", который надо отрезать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 13:31 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1590838]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 449ms |

| 0 / 0 |
