# پایگاه‌های داده > سایر پایگاه‌های داده > Foxpro >  نحوه ترمیم بانکهای اطلاعاتی

## azarsoft

از دوستان کسی می دونه چطوری میشه فایلهای آسیب دیده رو ترمیم کرد
من یک بانک اطلاعاتی دارم که وقتی می خواهم باز کنم خطای زیر رو می ده

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

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

----------


## arash2005

سلام دوست عزیز
با ویژوال فاکس 7 بانک رو باز کن و از بانک یه کپی بگیر و ذخیره کن و بانک جدید رو بجای بانک قبلی استفاده کن .
موفق باشید

----------


## javad_hosseiny

البته اگر جستجو می کردید زودتر به جواب می رسیدید
http://www.barnamenevis.org/sh...ad.php?t=24565

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

----------


## new_day

با سلام من یه راه منحصر به فردی دارم برای درست کردن جداول که هدر اون خراب میشه امیدوارم نخندید
من جدول مشکل دار را با اکسس باز میکنم و بعد دوباره کنورت میکنم توی فاکس پرو البته با هر کدوم ورژن که بخواهیم به همین راحتی repaired میشه و مشکلش حل میشه

----------


## rezaTavak

دوست عزیز وقتی شما برنامه را تحویل داده  اید که نمی تونید اینرو به کاربر بگید. 

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

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


**********************************************
*
*    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

----------


## پدرخوانده

با تشکر از آقای توکل
ولی من این تابع رو توی vfp9 استفاده کردم , درست کار نکرد
آیا نیاز به تغییر خاصی هست

----------


## rezaTavak

سلام

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


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

----------


## rezakhj

اگر با فایلهای DBF  تحت داس  مشکل دارید یک راه حل مناسب هم من دارم
یک روش بسیار استاندارد و ساده ولی کاملا تخصصی علی الخصوص اگر Header  صدمه جدی دیده باشد .

----------


## rezaTavak

لطفا در اینجا قرار دهید.

----------


## rezakhj

> لطفا در اینجا قرار دهید.


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

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

----------


## kia1349

مرسی این هم راه خیلی خوبیه اکثر برنامه هایی هم که در این خصوص نوشته میشه از همین تکنولوژی استفاده میکنند

----------


## javad_hosseiny

> راه خیلی خوبیه اکثر برنامه هایی هم که در این خصوص نوشته میشه از همین تکنولوژی استفاده میکنند


بله درست است  ولی نه به این صورت که هدر فایل (منظور از هدر از ابتدای فایل تا انتهای تعریف فیلدهاست) را از روی یک جدول مشابه کپی کنیم در ابتدای فایل آسیب دیده مثل:



> - فایلی با ساختار جدول آسیب دیده ایجاد کنید ( دقیقا مثل فایل آسیب دیده ) یا یک فایل قدیمی سالم از فایل آسیب دیده ( منظورم ساختار یکی باشد )
>  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

با سلام به همه دوستان
آقا من مشکلم رو با استفاده از برنامه ای که آقای rezaTavak لطف کرده بودن و تو همین تاپیک گذاشته بودن حل کردم و با اطمینان می گم شما هم می تونید ازش استفاده کنید

----------


## سعید اسلامی

با سلام 

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

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

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

----------


## غلامرضا شریفی

اگر با فایلهای DBF تحت داس مشکل دارید یک راه حل مناسب هم من دارم
foxfix.exe را اجرا نمائید

----------


## mehran_337

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

----------


## rahro

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

----------


## rezaTavak

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

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

----------


## rahro

> با برنامه ای که من ارائه کردم ببینید کدام فایل مشکل دارد. خودتان تغییری ایجاد کنید که اتوماتیک اینکار را انجام دهد. (بدون پرسش از کاربر) البته من دریافته ام برنامه من یک بایت درست محاسبه نمی کند و ممکن است جداول سالم را هم خراب نشان دهد.
> این خطا میگه جدول شما مطابق بانک نیست یعنی اینکه مثلا توی جدول ۸ فیلد هست توی بانک ۱۰ تا یا... (دلیل یک کپی از ساختار جداول در بانک قرار می گیرد این کپی باید با هدر جدول مطابقت کند.)
> 
> در واقع بانک اطلاعاتی یک جدول است که مشخصات جداول- ویوها و کانکشنها در آن ذخیره می شود. با use آنرا باز کنید و خودتان هک کنید.


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

----------


## rezaTavak

فکر کنم درست منظورم را نرسانده ام:

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

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

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

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


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



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


برای مدیریت خطا از 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

میشه جواب این سوالم رو هم بدین.؟!!



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


 :افسرده:

----------


## rezaTavak

بودنش را نمی دانم اما میشه با یک حلقه که یک یک بانکها را باز کند این کار را چک کرد.

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

----------


## mehran_337

دقیقا همان جوابی که آقای توکل داده اند . همیشه ابتدای برنامه لودینگی به کار ببر که در یک حلقه تمام جداول را یکی یکی تست کند . مسلما با همان مبحث on error stor .t.to VarErr
می توانی متوجه شوی که کدام جدول خراب بوده است.
یکی از لودینگهای خودم را اینجا می زارم

----------


## rahro

> دقیقا همان جوابی که آقای توکل داده اند . همیشه ابتدای برنامه لودینگی به کار ببر که در یک حلقه تمام جداول را یکی یکی تست کند . مسلما با همان مبحث on error stor .t.to VarErr
> می توانی متوجه شوی که کدام جدول خراب بوده است.
> یکی از لودینگهای خودم را اینجا می زارم


مرسی مهران جان 
ببخشید یک هفته بود که نبودم !!

----------


## RESMAILY

سلام  اگر فایل dbf خراب شد فایلی با همان ساختار پیدا کنید بعد به وسیله NC(نورتون) تعداد رکورد های فایل خراب را شمارش کنید سپس فایل سالم به تعداد رکوردهای شمارش شده پر کنید پر از space وبعد ذخیره نماید وبعد 11 کارکتر اولیه فایل سالم را کپی نموده به فایل خراب منتقل نماید در صورت تمایل بفرمایید تا برنامه مورد نظر که هدر فایل را کپی میکند را برای شما ارسال نماییم

----------


## rahro

> سلام اگر فایل dbf خراب شد فایلی با همان ساختار پیدا کنید بعد به وسیله NC(نورتون) تعداد رکورد های فایل خراب را شمارش کنید سپس فایل سالم به تعداد رکوردهای شمارش شده پر کنید پر از space وبعد ذخیره نماید وبعد 11 کارکتر اولیه فایل سالم را کپی نموده به فایل خراب منتقل نماید در صورت تمایل بفرمایید تا برنامه مورد نظر که هدر فایل را کپی میکند را برای شما ارسال نماییم


سلام 
از لطف شما بیشمار متشکرم ولی عزیز دل صحبت از ترمیم خودکار بود نه دستی!!

----------


## rahro

جناب توكل سلام 
با موردي مواجه شدم كه پس ترميم جدول خود بوسيله برنامه شما تمامي اطلاعات جدول به كاركتري مشابه و غير قابل استفاده تبديل شد.
خواستم فايل خراب رو براي شما ضميمه كنم تا اگر نقص از طرف سورس شماست اصلاح شود.

----------


## rezaTavak

مرسی بررسی میکنم.

----------


## rezaTavak

ایندکس آن ۰ بایت طول دارد پس خراب شده است.

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

----------


## IC_prog

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

----------


## rahro

> جناب rahro
> من فایل شما رو با روش خودم اصلاح کردم که باز میشه ولی ظاهرا چیزی داخلش نیست .
> جهت اطلاع :


از لطف شما ممنونم , ولي عرض كردم كه:



> كه پس ترميم جدول خود بوسيله برنامه


بله مشكل اصلي همينه, نابودي اطلاعات!!!!

----------


## ashkan_gorg

وقتی فایل رو با برنامه ای که خودم نوشتم ترمیم کردن خالی نبود ولی اطلاعات کد شده بودن خیلی تعجب کردم هرکاری هم کردم درست نشد

----------


## rahro

دقيقا" همينطور , البته اين را هم عرض كردم كه :


> تمامي اطلاعات جدول به كاركتري مشابه و غير قابل استفاده تبديل شد


ناگفته نماند اطلاعات مربوطه در جداول در اصل هم كد شده بود ولي نه آنطور كه بعد از ترميم نمايش داده شده بود.
بحرحال از توجه شما ممنونم.

----------


## IC_prog

البته شاید ربطی به بحث نداشته باشه *اما* :
الزام کاربر به تهیه نسخه پشتیبان روزانه یا حتی نوشتن کدی که اتوماتیک این کاررو روزانه انجام بده . حداقل با انجام اینکار این جورمواقع در بدترین حالت اطلاعات یک روز از بین میره .

----------


## rezaTavak

من نوشتم.

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

----------

