PDA

View Full Version : نحوه ترمیم بانکهای اطلاعاتی



azarsoft
یک شنبه 10 اردیبهشت 1385, 20:38 عصر
از دوستان کسی می دونه چطوری میشه فایلهای آسیب دیده رو ترمیم کرد
من یک بانک اطلاعاتی دارم که وقتی می خواهم باز کنم خطای زیر رو می ده

Table da1.dbf has become corrupted. The table will need to be repaired before using again. (Error 2091)

چطوری میشه این فایل رو ترمیم کرد

arash2005
دوشنبه 11 اردیبهشت 1385, 09:49 صبح
سلام دوست عزیز
با ویژوال فاکس 7 بانک رو باز کن و از بانک یه کپی بگیر و ذخیره کن و بانک جدید رو بجای بانک قبلی استفاده کن .
موفق باشید

javad_hosseiny
دوشنبه 11 اردیبهشت 1385, 09:55 صبح
البته اگر جستجو می کردید زودتر به جواب می رسیدید
http://www.barnamenevis.org/forum/showthread.php?t=24565

از طریق برنامه foxplus می تونید این کار را انجام دهید
http://www.barnamenevis.org/forum/showthread.php?t=43144
و همچنین خود ویژوال فاکس پرو 7 دارای قدرت بالایی در تعمیر و خواندن جداول خراب دارد
و نهایتا الی ماشاءالله سورس برای این منظور وجود دارد که از طریق کد نویسی می تونید به اونها دسترسی پیدا کنید
در سایت ذیل برای این منظور توابع بسیاری معرفی شده است http://www.universalthread.com/
و همچنین تابعی که تازگی ها آقای توکل در یکی از این تایپیکها ارائه کرده اند.

new_day
چهارشنبه 20 اردیبهشت 1385, 18:44 عصر
با سلام من یه راه منحصر به فردی دارم برای درست کردن جداول که هدر اون خراب میشه امیدوارم نخندید
من جدول مشکل دار را با اکسس باز میکنم و بعد دوباره کنورت میکنم توی فاکس پرو البته با هر کدوم ورژن که بخواهیم به همین راحتی repaired میشه و مشکلش حل میشه

rezaTavak
پنج شنبه 21 اردیبهشت 1385, 18:05 عصر
دوست عزیز وقتی شما برنامه را تحویل داده اید که نمی تونید اینرو به کاربر بگید.

در ضمن شما با اون تکه کد که من نوشتم در عرض کمتر از یک ثانیه جدولتون را درست میکنید. این توی فاکس قابل انجام است.

این هم دوباره کدش:



**********************************************
*
* Show Record Number, Length Header,
* Length Record, FileSize,
* Current File Size
*
**********************************************
FUNCTION RepairDbf
LPARAMETERS tcFileName
IF TYPE("tcFileName")<> "C"
? "No Parameter!"
RETURN -1 && No parameter!
ENDIF
LOCAL ARRAY laFileProperties[1,2]
LOCAL lnFileLen, lnRecNo, lnLenRec, lnLenHeader
ADIR(laFileProperties, tcFileName)
lnFileLen = laFileProperties[2] && File Size
lnFileHandle = FOPEN(tcFileName,2)
IF lnFileHandle < 1
? FERROR(), ErrorFileLowLevelWork()
RETURN -2 && Can't Open File!
ENDIF
FSEEK(lnFileHandle, 4)
lnRecNo = FREAD(lnFileHandle, 4) && Record Number
lnLenHeader = FREAD(lnFileHandle, 2) && Length Header
lnLenRec = FREAD(lnFileHandle, 2) && Length Record


lnRecNo = BytestringToNumber(lnRecNo)
lnLenHeader = BytestringToNumber(lnLenHeader)
lnLenRec = BytestringToNumber(lnLenRec)

&& Show Numbers
?"Record Number:", lnRecNo
?"Length Header:", lnLenHeader
?"Length Record:", lnLenRec
?
?
?
?"File Length:", lnFileLen
?"Currecnt Must:", lnRecNo*lnLenRec+lnLenHeader
?"Diffrent is:", lnFileLen - lnRecNo*lnLenRec+lnLenHeader
IF lnFileLen - lnRecNo*lnLenRec+lnLenHeader <> 0 AND ;
MESSAGEBOX("Currect Size file?",16+4)=6
&& if filesize not correct and IF Press Yes
FCHSIZE(lnFileHandle, lnRecNo*lnLenRec+lnLenHeader)
ENDIF
FCLOSE(lnFileHandle)
RETURN 0
ENDFUNC



**************************************************
* THIS FUNCTION GET STRING OF BYTE AND RETURN
* EQUVALENT NUMBER
*
*
*
**************************************************
FUNCTION BytestringToNumber
LPARAMETERS tcStr
LOCAL i, lcHex
lcHex = ""
FOR i = LEN(tcStr) TO 1 STEP -1
lcHex = lcHex + RIGHT(TRANSFORM(ASC(SUBSTR(tcStr,i,1)),"@0"),2)
NEXT
RETURN EVALUATE("0x" + ALLTRIM(lcHex))
ENDFUNC



************************************************** *
* THIS FUNCTION GET STRING OF BYTE AND RETURN
* EQUVALENT NUMBER
*
*
*
************************************************** *
FUNCTION ErrorFileLowLevelWork
LOCAL ARRAY laArray[31]
laArray[2] ="File not found"
laArray[4] ="Too many files open (out of file handles)"
laArray[5] ="Access denied"
laArray[6] ="Invalid file handle given"
laArray[8] ="Out of memory"
laArray[25] ="Seek error (can't seek before the start of a file)"
laArray[29] ="Disk full"
laArray[31] ="Error opening file"
RETURN laArray[FERROR()]
ENDFUNC

پدرخوانده
جمعه 22 اردیبهشت 1385, 12:04 عصر
با تشکر از آقای توکل
ولی من این تابع رو توی vfp9 استفاده کردم , درست کار نکرد
آیا نیاز به تغییر خاصی هست

rezaTavak
شنبه 23 اردیبهشت 1385, 10:44 صبح
سلام

نه نیاز نیست فقط برای ترمیم تایید می خواهد.


میشه اون فایل را اگر حجمش کم هست اینجا بذارید؟

rezakhj
پنج شنبه 28 اردیبهشت 1385, 10:12 صبح
اگر با فایلهای DBF تحت داس مشکل دارید یک راه حل مناسب هم من دارم
یک روش بسیار استاندارد و ساده ولی کاملا تخصصی علی الخصوص اگر Header صدمه جدی دیده باشد .

rezaTavak
پنج شنبه 28 اردیبهشت 1385, 11:16 صبح
لطفا در اینجا قرار دهید.

rezakhj
چهارشنبه 17 خرداد 1385, 11:52 صبح
لطفا در اینجا قرار دهید.

اگر هیدر فایل بشدت آسیب دیده باشد بانکهای تحت داس و ویندوز

1- فایلی با ساختار جدول آسیب دیده ایجاد کنید ( دقیقا مثل فایل آسیب دیده ) یا یک فایل قدیمی سالم از فایل آسیب دیده ( منظورم ساختار یکی باشد )
2- برنامه hexedit را از مسیر C:\Program Files\Microsoft Visual FoxPro 9\Tools\HexEdit اجرا کنید و فایل سالم را open کنید
3- بخش هیدر را چاپ کرده ( قسمت بالای فایل باز شده - که فیلدها در سمت راست نمایش داده میشود تا انتهای محل فیلدها )
4- فایل معیوب را open کنید
4- عین هیدر فایل سالم را در فایل معیوب ایجاد کنید
موفق باشید فکر میکنم بهترین راه حل و سالمترین راه حل بدون از دست رفتن اطلاعات
پیشنهاد خود microsoft است

kia1349
پنج شنبه 18 خرداد 1385, 05:45 صبح
مرسی این هم راه خیلی خوبیه اکثر برنامه هایی هم که در این خصوص نوشته میشه از همین تکنولوژی استفاده میکنند

javad_hosseiny
پنج شنبه 18 خرداد 1385, 08:25 صبح
راه خیلی خوبیه اکثر برنامه هایی هم که در این خصوص نوشته میشه از همین تکنولوژی استفاده میکنند
بله درست است ولی نه به این صورت که هدر فایل (منظور از هدر از ابتدای فایل تا انتهای تعریف فیلدهاست) را از روی یک جدول مشابه کپی کنیم در ابتدای فایل آسیب دیده مثل:


- فایلی با ساختار جدول آسیب دیده ایجاد کنید ( دقیقا مثل فایل آسیب دیده ) یا یک فایل قدیمی سالم از فایل آسیب دیده ( منظورم ساختار یکی باشد )
2- برنامه hexedit را از مسیر C:\Program Files\Microsoft Visual FoxPro 9\Tools\HexEdit اجرا کنید و فایل سالم را open کنید
3- بخش هیدر را چاپ کرده ( قسمت بالای فایل باز شده - که فیلدها در سمت راست نمایش داده میشود تا انتهای محل فیلدها )
4- فایل معیوب را open کنید
4- عین هیدر فایل سالم را در فایل معیوب ایجاد کنید
چرا که باید دقت کنید در هدر فایل قبل از تعریف فیلدها (نام و اندازه و نوع و ...) پارامترهای دیگری همچون طول هر رکورد, تعداد رکوردهای جدول (تابع recccount() ) و .... وجود دارد که معمولا به هنگامی خرابی جداول بیشتر از بخش تعریف فیلدها این کاراکترها آسیب می بینند که معمولا برنامه ها قادر به باز کردن جدول نمی باشد.
و هنگامی که شما از روی جدول آسیب دیده یک جدول مشابه و بدون رکورد ایجاد می کنید و بخواهید آن را در ابتدای جدول آسیب دیده کپی کنید برخی از این پارامترها (مخصوصا کاراکترهای تعیین کننده تعداد رکوردهای جدول جاری (که به صورت 3 کاراکتر کد شده بر مبنای 256 می باشد) از بین رفته و برابر با صفر می شود.
والبته هدر فایل جدید از جهاتی مثل طول رکورد , مشخصات فیلدها و... به درد می خوره اما نه به عنوان جایگزینی در فایل آسیب دیده.
(چرا که به هر حال به عنوان ترمیم آسیب دیدگی شما به پارامترهای طول فایل - طول رکورد - تعداد رکوردهای جدول و .... نیاز دارید)
---
البته سورس آقای توکل هم هست (هرچند بنده تست نکردم ولی با توجه به مطالعه سورس کد ایشون باید بدون مشکل و سالم باشه) ولی بنده نیز از خیلی وقت پیش (زمان داس که معمولا این مشکل خرابی جداول (مخصوصا اونهایی که دارای فیلد memo یا ایندکس مرکب هستند) بسیار متداول بود یک تابع مخصوص این کار نوشته بودم که اینکار را انجام می داد.


*------------------------------------
PROCEDURE REPAIR_ENJIN
PARAMETER NF1, NF2
FL1 = fopen(nf1)
IF FL1 < 0
WAIT WINDOW '[' +NF1 + ']' + ' سیستم قادر به باز کردن فایل نمی باشد'
CANCEL
ENDIF
TETR_ = FREAD(FL1, 10000)
R2 = fseek(fl1,0,2) && SIZE TABLE EMPTY
=fclose(fl1)
*---------------
FL1 = fopen(NF2)
IF FL1 < 0
WAIT WINDOW '[' +NF2 + ']' + ' سیستم قادر به باز کردن فایل نمی باشد'
CANCEL
ENDIF
*TETR_ = FREAD(FL1, r2)
R1 = fseek(FL1,0,2) && SIZE OF TABLE CRUSH
=fclose(fl1)
*---------------
USE &NF1
APPEND BLANK
USE
fl1 = fopen(nf1)
TOOLF = fseek(fl1,0,2)
=fclose(fl1)
R3 = TOOLF - (R2 + 1) && SIZE RECORD
*--------
JAM_REC = (R1 - (R2+1) ) / R3
C_R = CODE_REC(JAM_REC,2)
TETR_ = STUFF(TETR_, 5,3, C_R)
FL1 = FOPEN(NF2,2)
= FWRITE(FL1, TETR_)
= FSEEK(FL1,-1,2)
AZT = FREAD(FL1,1)
IF ASC(AZT) # 26
= FWRITE(FL1,CHR(26))
ENDIF
= FCLOSE(FL1)
*-------------------------------------------
FUNCTION CODE_REC
PARAMETE RCODE, NOR
IF NOR = 1
IF TYPE('RCODE') # 'C'
RETURN ''
ENDIF
ACD1 = asc(SUBSTR(RCODE,1,1))
ACD2 = asc(SUBSTR(RCODE,2,1))
ACD3 = asc(SUBSTR(RCODE,3,1))
_EX = ACD3 * (256*256) + ACD2 * 256 + ACD3
_EX = ALLT(STR(_EX))
ELSE
IF TYPE('RCODE') # 'N'
RETURN ''
ENDIF
AD1 = INT(RCODE/ (256*256) )
AD20 = MOD(RCODE, (256*256) )
AD2 = INT(AD20 / 256)
AD3 = MOD(AD20, 256)
_EX = CHR(AD3) + CHR(AD2) + CHR(AD1)
ENDIF
RETURN _EX

که در آن nf1 نام جدول خراب و nf2 نام جدولی جهت ایجاد کپی سالم از جدول خراب است

azarsoft
چهارشنبه 24 خرداد 1385, 09:52 صبح
با سلام به همه دوستان
آقا من مشکلم رو با استفاده از برنامه ای که آقای rezaTavak لطف کرده بودن و تو همین تاپیک گذاشته بودن حل کردم و با اطمینان می گم شما هم می تونید ازش استفاده کنید

سعید اسلامی
یک شنبه 18 تیر 1385, 10:06 صبح
با سلام

چرا جداول در ویژوال فاکس پرو به راحتی آسیب پذیر میباشند و جداول در محیط داس ایمن تر بودن

و چکار میشه کرد که فایلهایDBF تحت ویژوال مطمئن تر عمل کنند و به قول معروف سیف تر باشند

و زود آسیب نبینند

غلامرضا شریفی
سه شنبه 31 مرداد 1385, 19:29 عصر
اگر با فایلهای DBF تحت داس مشکل دارید یک راه حل مناسب هم من دارم
foxfix.exe را اجرا نمائید

mehran_337
چهارشنبه 01 شهریور 1385, 00:18 صبح
آقای شریفی !
ورود شما رو به این سایت خوش آمد می گم.
امیدوارم شما هم مثل همه ما بهره لازم رو از سایت ببرید.
البته ضمن تکمیل فرمایشات شما باید عرض کنم که فایلهای تحت داس اصولا با نرم افزار فارس پرو بدون استفاده از فایل های اجرایی خارجی روش مناسبی بود برای ترمیم فایلها اما در ویژوال به اندازه لازم در این تاپیک راه حل داده شده و همچنین برنامه ها و توابع مربوطه نیز موجود است.
به هر حال اگر خودمون در برنامه از این توابع استفاده کنیم برای کاربر خیلی جالبتر تا اینکه کنترل برنامه به یه فایل اجرایی سپرده بشه
بازهم به شما خوشآمد می گم.

rahro
چهارشنبه 17 مرداد 1386, 13:41 عصر
سلام
میخوام یک فرم رو باز کنم . سیستم پیغام میده که یکی از جداول فرم من معیوبه وباید اون رو ترمیم کنم .!
1- آیا برای ترمیم باید تمامی جداول دیتابیس خودم رو کنترل کنم و به رفع نقص اقدام کنم یا با استفاده از تابعی خاص میشه نام جدول معیوب را پیدا کرد؟!
2- آیا کد خطای 2005 مربوط به خرابی جداول است یا خیر ؟! نفرمائید هلپ!!؟ چون که مطالعه کردم توضیج جامع ندیدم .
متشکرم
رهرو

rezaTavak
پنج شنبه 18 مرداد 1386, 08:21 صبح
با برنامه ای که من ارائه کردم ببینید کدام فایل مشکل دارد. خودتان تغییری ایجاد کنید که اتوماتیک اینکار را انجام دهد. (بدون پرسش از کاربر) البته من دریافته ام برنامه من یک بایت درست محاسبه نمی کند و ممکن است جداول سالم را هم خراب نشان دهد.
این خطا میگه جدول شما مطابق بانک نیست یعنی اینکه مثلا توی جدول ۸ فیلد هست توی بانک ۱۰ تا یا... (دلیل یک کپی از ساختار جداول در بانک قرار می گیرد این کپی باید با هدر جدول مطابقت کند.)

در واقع بانک اطلاعاتی یک جدول است که مشخصات جداول- ویوها و کانکشنها در آن ذخیره می شود. با use آنرا باز کنید و خودتان هک کنید.

rahro
پنج شنبه 18 مرداد 1386, 08:41 صبح
با برنامه ای که من ارائه کردم ببینید کدام فایل مشکل دارد. خودتان تغییری ایجاد کنید که اتوماتیک اینکار را انجام دهد. (بدون پرسش از کاربر) البته من دریافته ام برنامه من یک بایت درست محاسبه نمی کند و ممکن است جداول سالم را هم خراب نشان دهد.
این خطا میگه جدول شما مطابق بانک نیست یعنی اینکه مثلا توی جدول ۸ فیلد هست توی بانک ۱۰ تا یا... (دلیل یک کپی از ساختار جداول در بانک قرار می گیرد این کپی باید با هدر جدول مطابقت کند.)

در واقع بانک اطلاعاتی یک جدول است که مشخصات جداول- ویوها و کانکشنها در آن ذخیره می شود. با use آنرا باز کنید و خودتان هک کنید.
نه نه . من برای ترمیم آن کدی دارم و همینطور بصورت دستی هم میتوانم جدول مربوطه را ترمیم کنم ولی میخوام همانطور که فرمودید بصورت اتوماتیک سیستم اینکار رو انجام بده .
برای اینکار اول باید بدونم کد ارور جداول خراب آیا واقعا 2005 هست یا خیر . وبعد میخوام بدونم آیا تابعی هست که بشه نام جدولی که میخواسته باز بشه و نشده رو برگردونه یا نه !. به عنوان مثال به هنگامی که این خطا روی میده تو مسج ارور مربوطه اعلام میشه که فلان جدول خرابه و احتیاج به ترمیم داره میخوام ببینم اگر توابعی نیست از تو همین مسج نام جدول رو در بیاورم !؟ .

rezaTavak
پنج شنبه 18 مرداد 1386, 11:50 صبح
فکر کنم درست منظورم را نرسانده ام:

کد خطای ۲۰۰۵ یعنی اینکه جدولی که هست با بانک مطابقت ندارد این خطا ممکن است زمانی رخ دهد که شما یک جدول را که به یک بانک مربوط است تغییر داده باشید و بعد یک کپی از جدول تغییر داده نشده را در مسیر بانک قرار دهید.

یک مثال: یک بانک بسازید و یک جدول. بانک را ببندید. بانکها و جداول را در جایی کپی کنید. حالا جدول را تغییر دهید. بانک را ببنید. کپی گرفته شده جدول را در محل اصلی رونویسی کنید.

حالا این خطا رخ خواهد داد!

حتی ممکن است ایندکسها را تغییر دهید.


اما کدی که من در پست شماره ۵ قرار داده ام جدولی که اندازه واقعی ندارد را به اندازه واقعی تبدیل میکند. یک کد برای شما خواهم نوشت که اینکار را اتوماتیک انجام دهد اما چند روز دیگر.



این ربطی به خطای ۲۰۰۵ ندارد.


برای مدیریت خطا از on error استفاده کنید.





ON ERROR DO errhand WITH ;
ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )



******************************************
PROCEDURE errhand
LPARAMETER tnCodeError, tcMessageError, tcMessageError1, tcProgramName, tnLineProgramError

=MESSAGEBOX( ;
'ÔãÇÑå ÎØÇ: ' + LTRIM(STR(tnCodeError))+CHR(13);
+ 'íÛÇã ÎØÇ: ' + tcMessageError+CHR(13);
+ 'ÔãÇÑå ßÏ ÈÇ ÎØÇ:' + tcMessageError1+CHR(13);
+ 'ÔãÇÑå ÎØ ÈÑäÇãå:' + LTRIM(STR(tnLineProgramError))+CHR(13);
+ 'äÇã ÈÑäÇãå ÝÚÇá: ' + tcProgramName,16,'ÎØÇ')

RETURN .F.
ENDPROC


این کد را در ابتدای برنامه قرار دهید. و خودتان هر خطایی را خواستید مدیریت کنید.

تذکر; try-exception هم یک نوع دیگر مدیریت خطاست. نوع دیگر هم در متد error فرم است و...

rahro
پنج شنبه 18 مرداد 1386, 12:19 عصر
میشه جواب این سوالم رو هم بدین.؟!!

میخوام بدونم آیا تابعی هست که بشه نام جدولی که میخواسته باز بشه و نشده رو برگردونه یا نه !. به عنوان مثال به هنگامی که این خطا روی میده تو مسج ارور مربوطه اعلام میشه که فلان جدول خرابه و احتیاج به ترمیم داره میخوام ببینم اگر توابعی نیست از تو همین مسج نام جدول رو در بیاورم !؟ .
:افسرده:

rezaTavak
جمعه 19 مرداد 1386, 08:46 صبح
بودنش را نمی دانم اما میشه با یک حلقه که یک یک بانکها را باز کند این کار را چک کرد.

من معمولا بانکهام را توی شاخه ی database برنامه ام کپی می کنم با adir لیست می گیرم و ...

mehran_337
یک شنبه 21 مرداد 1386, 07:37 صبح
دقیقا همان جوابی که آقای توکل داده اند . همیشه ابتدای برنامه لودینگی به کار ببر که در یک حلقه تمام جداول را یکی یکی تست کند . مسلما با همان مبحث on error stor .t.to VarErr
می توانی متوجه شوی که کدام جدول خراب بوده است.
یکی از لودینگهای خودم را اینجا می زارم

rahro
یک شنبه 28 مرداد 1386, 08:18 صبح
دقیقا همان جوابی که آقای توکل داده اند . همیشه ابتدای برنامه لودینگی به کار ببر که در یک حلقه تمام جداول را یکی یکی تست کند . مسلما با همان مبحث on error stor .t.to VarErr
می توانی متوجه شوی که کدام جدول خراب بوده است.
یکی از لودینگهای خودم را اینجا می زارم
مرسی مهران جان
ببخشید یک هفته بود که نبودم !!

RESMAILY
پنج شنبه 01 شهریور 1386, 01:26 صبح
سلام اگر فایل dbf خراب شد فایلی با همان ساختار پیدا کنید بعد به وسیله NC(نورتون) تعداد رکورد های فایل خراب را شمارش کنید سپس فایل سالم به تعداد رکوردهای شمارش شده پر کنید پر از space وبعد ذخیره نماید وبعد 11 کارکتر اولیه فایل سالم را کپی نموده به فایل خراب منتقل نماید در صورت تمایل بفرمایید تا برنامه مورد نظر که هدر فایل را کپی میکند را برای شما ارسال نماییم

rahro
پنج شنبه 01 شهریور 1386, 07:03 صبح
سلام اگر فایل dbf خراب شد فایلی با همان ساختار پیدا کنید بعد به وسیله NC(نورتون) تعداد رکورد های فایل خراب را شمارش کنید سپس فایل سالم به تعداد رکوردهای شمارش شده پر کنید پر از space وبعد ذخیره نماید وبعد 11 کارکتر اولیه فایل سالم را کپی نموده به فایل خراب منتقل نماید در صورت تمایل بفرمایید تا برنامه مورد نظر که هدر فایل را کپی میکند را برای شما ارسال نماییم
سلام
از لطف شما بیشمار متشکرم ولی عزیز دل صحبت از ترمیم خودکار بود نه دستی!!

rahro
چهارشنبه 12 تیر 1387, 12:44 عصر
جناب توكل سلام
با موردي مواجه شدم كه پس ترميم جدول خود بوسيله برنامه شما تمامي اطلاعات جدول به كاركتري مشابه و غير قابل استفاده تبديل شد.
خواستم فايل خراب رو براي شما ضميمه كنم تا اگر نقص از طرف سورس شماست اصلاح شود.

rezaTavak
جمعه 14 تیر 1387, 11:31 صبح
مرسی بررسی میکنم.

rezaTavak
شنبه 15 تیر 1387, 19:27 عصر
ایندکس آن ۰ بایت طول دارد پس خراب شده است.

در ضمن تعداد رکورد در هدر فایل ۱۲۲۷۶ است که حجم فایل شما باید ۳۵۳۶۷۱۲ باشد که فقط ۱۲۲۴ است یعنی فقط به اندازه طول هدر جدول. پس نتیجه اینکه ممکن است موقع کار با این جدول سیستم دچار مشکل شده باشد. برنامه من طول زیاد را کم میکند این طولش کم است و هیچ نرم افزاری آنرا درست نخواهد کرد.

IC_prog
یک شنبه 16 تیر 1387, 09:06 صبح
جناب rahro
من فایل شما رو با روش خودم اصلاح کردم که باز میشه ولی ظاهرا چیزی داخلش نیست .
جهت اطلاع :

rahro
یک شنبه 16 تیر 1387, 09:45 صبح
جناب rahro
من فایل شما رو با روش خودم اصلاح کردم که باز میشه ولی ظاهرا چیزی داخلش نیست .
جهت اطلاع :
از لطف شما ممنونم , ولي عرض كردم كه:

كه پس ترميم جدول خود بوسيله برنامه
بله مشكل اصلي همينه, نابودي اطلاعات!!!!

ashkan_gorg
یک شنبه 16 تیر 1387, 19:41 عصر
وقتی فایل رو با برنامه ای که خودم نوشتم ترمیم کردن خالی نبود ولی اطلاعات کد شده بودن خیلی تعجب کردم هرکاری هم کردم درست نشد

rahro
دوشنبه 17 تیر 1387, 06:25 صبح
دقيقا" همينطور , البته اين را هم عرض كردم كه :
تمامي اطلاعات جدول به كاركتري مشابه و غير قابل استفاده تبديل شد
ناگفته نماند اطلاعات مربوطه در جداول در اصل هم كد شده بود ولي نه آنطور كه بعد از ترميم نمايش داده شده بود.
بحرحال از توجه شما ممنونم.

IC_prog
دوشنبه 17 تیر 1387, 07:47 صبح
البته شاید ربطی به بحث نداشته باشه اما :
الزام کاربر به تهیه نسخه پشتیبان روزانه یا حتی نوشتن کدی که اتوماتیک این کاررو روزانه انجام بده . حداقل با انجام اینکار این جورمواقع در بدترین حالت اطلاعات یک روز از بین میره .

rezaTavak
دوشنبه 17 تیر 1387, 08:26 صبح
من نوشتم.

موقع خروج یک فایل rar از کل اطلاعات تهیه میشود و به کاربر گفته ام اینرا روی رسانه دیگری مانند Flash Drive نیز انتقال دهد.