PDA

View Full Version : بازیابی بانک اکسس



com.ha.za
یک شنبه 02 اسفند 1388, 00:41 صبح
یه برنامه نوشتم که بانک اون اکسس هست و برای پشتیبان گیری از کامپونت Backup استفاده میکنم وقتی میخوام بانک و Restore کنم با خطا مواجه میشم، فرض کنید برنامه من در مسیر
c:\\soft هست و یک بکاپ در مسیر D:\\prog گرفتم وقتی Restore می کنم پیغام ِD:\\prog\bank.mdb is not a valid path میده
زمانی که میخوام وارد فرم بشم Connection ها رو میبندم و زمانی که میخوام خارج شم بازش میکنم که با این خطا روبرو میشم حالا راه حل چیه؟
ممنون

Mahmood_M
یک شنبه 02 اسفند 1388, 01:05 صبح
اگر فرض رو بر این بزاریم که در کامپوننت آدرس رو درست وارد می کنید و در اینجا اشتباه نوشتید ( چون آدرسی به صورت D:\\prog برای ویندوز قابل قبول نیست و باید به صورت D:\prog باشه ! ) ، این موضوع به کامپوننت بستگی داره ، از چه کامپوننتی استفاده می کنید ؟ ، اگر می خواید مدیریت بهتری داشته باشید توصیه می کنم بدون کامپوننت این کار رو انجام بدید ، در راحت ترین حالت می تونید برای هر جدول یک فایل اکسس در نظر بگیرید و در صورت نیاز اون فایلها رو در جایی کپی و برای Restore هم دوباره اونها رو در پوشه ی برنامه با فایل فعلی جایگزین کنید ...
روشی که خودم استفاده می کنم : انتخاب جداول برای پشتیبانگیری رو در اختیار کاربر قرار می دم ، بعد از انتخاب جداول فایلهای مربوط به جداول رو توسط کامپوننت TAnyFileCollection (http://salarsoft.somee.com/downloads/free/file_collector.zip) ( از سری کامپوننتهای آقای خلیل زاده (http://salarsoft.somee.com) ) در یک فایل قرار می دم و فایل نهایی ساخته شده رو با اختیار کاربر در جایی ذخیره می کنم ، برای Restor هم فایل رو از کاربر می گیرم و جداول درونش رو به کاربر نشون می دم و باز به انتخاب کاربر جداولی که درون فایل قرار داره رو در مسیر برنامه با فایلهای فعلی جایگزین می کنم ...
کمی طولانی هست اما مدیریت بهتری میشه روی انجام BackUp و Restore داشت ...

موفق باشید ...

com.ha.za
یک شنبه 02 اسفند 1388, 10:12 صبح
در این مورد مشکل زیادی دارم و زیاد جستجو کردم که نتیجه اش همون کامپونت بود و روش دیگه ای هم یاد ندارم اگر براتون امکان داره یه نمونه برام بذارید
فقط کپی فایل و یاد دارم:عصبانی++:

Modernidea
یک شنبه 02 اسفند 1388, 12:59 عصر
در این مورد مشکل زیادی دارم و زیاد جستجو کردم که نتیجه اش همون کامپونت بود و روش دیگه ای هم یاد ندارم اگر براتون امکان داره یه نمونه برام بذارید
فقط کپی فایل و یاد دارم:عصبانی++:

سلام

شما فایلی که آقا محمود قرار دادن رو دانلود کنید. TAnyFileCollection (http://salarsoft.somee.com/downloads/free/file_collector.zip)

یک فایل ReadMe داره که اگر آن را بخوانید به احتمال زیاد متوجه میشوید.

موفق باشید.

com.ha.za
یک شنبه 02 اسفند 1388, 23:47 عصر
از این کامپونت استفاده کردم و یه مشکل دارم ، از یک DirectoryListBox برای دریافت آدرس محل ذخیره فایل استفاده میکنم و زمانی که ب خط fany.savetofile(a) میرسه خطا میده و اگر فرض کنیم در مسیر c:\back میخوام ذخیره کنم میگه can not open c:\back\data\bank.mdbبه صورت زیر برنامه رو قرار دادم ..

procedure Tbackup.Button4Click(Sender: TObject);
var
fany:TAnyFile;
fItem1,fItem2:TAnyFileItem;
a:string;
begin
a:=DirectoryListBox1.Directory+'\'+edit1.text+'.ZZ Z';
showmsg(a);
fany:=TAnyFile.Create(TAnyFileItem);
try

fItem1:=fany.Add;
fItem1.Stream.LoadFromFile('data\bank.mdb');


fAny.SaveToFile(a);

finally
fany.Free;
end;

end;

com.ha.za
دوشنبه 03 اسفند 1388, 07:36 صبح
کسی نیست جواب بده ؟

Mahmood_M
دوشنبه 03 اسفند 1388, 10:57 صبح
از این کامپونت استفاده کردم و یه مشکل دارم ، از یک DirectoryListBox برای دریافت آدرس محل ذخیره فایل استفاده میکنم و زمانی که ب خط fany.savetofile(a) میرسه خطا میده و اگر فرض کنیم در مسیر c:\back میخوام ذخیره کنم میگه can not open c:\back\data\bank.mdbبه صورت زیر برنامه رو قرار دادم ..
فایل اکسسی که در حال استفاده توسط برنامه هست نمی تونه توسط اون کامپوننت Load بشه ، برای انجام این کار ابتدا بانکها و Connection هاتون رو غیرفعال کنید بعد فایلهای اکسس رو در اون کامپوننت قرار بدید و بعد از پایان کار دوباره Connection ها و بانکها رو فعال کنید ...

موفق باشید ...

com.ha.za
دوشنبه 03 اسفند 1388, 13:00 عصر
نه منظورم و متوجه نشدید
من بانک و میبندم و در این مورد مشکلی ندارم مشکل اینجاست که باید آدرس فایلی که میخواهیم اونو LOAD کنیم از قبل مشخص کنیم که ثابت باشه من آدرس اون فایل و به صورت DATA/BANK.MDB وارد میکنم چون نمیدونم کاربر برنامه رو در چه مسیری قرار میده ، حالا اگر برنامه رو اجرا کنی مسیری که برای ذخیره فایل انتخاب میکنی از همون آدرس خطا میگیره که تو این آدرس این فایل وجود نداره
متشکرم

Modernidea
دوشنبه 03 اسفند 1388, 14:19 عصر
چون نمیدونم کاربر برنامه رو در چه مسیری قرار میده ، حالا اگر برنامه رو اجرا کنی مسیری که برای ذخیره فایل انتخاب میکنی از همون آدرس خطا میگیره که تو این آدرس این فایل وجود ندارهخوب شما میتونید با این کد مسیر فعلیه فایل اجرایی برنامه را بدست آورید.
سپس آدرس بانک را به آن اظافه کنید.

var
Path : String;
begin
Path := ExtractFilePath(Application.ExeName);
Path := Path + 'Data\Bank.mdb';
end;

Mahmood_M
دوشنبه 03 اسفند 1388, 20:24 عصر
نه منظورم و متوجه نشدید
من بانک و میبندم و در این مورد مشکلی ندارم مشکل اینجاست که باید آدرس فایلی که میخواهیم اونو LOAD کنیم از قبل مشخص کنیم که ثابت باشه من آدرس اون فایل و به صورت DATA/BANK.MDB وارد میکنم چون نمیدونم کاربر برنامه رو در چه مسیری قرار میده ، حالا اگر برنامه رو اجرا کنی مسیری که برای ذخیره فایل انتخاب میکنی از همون آدرس خطا میگیره که تو این آدرس این فایل وجود نداره
متشکرم
وقتی مسیری در DirectoryListBox انتخاب می کنید ، برنامه مسیر فعلی برنامه رو همون مسیر انتخاب شده در نظر میگیره و سعی می کنه مسیر DATA/BANK.MDB رو در مسیر انتخاب شده در DirectoryListBox پیدا کنه !
پیشنهاد می کنم به جای DirectoryListBox از یک Save Dialog استفاده کنید و خاصیت NoChangeDir اون رو از قسمت Option مربوط به اون True کنید ، دیگه این مشکل پیش نمی یاد ...
اگه می خواید از DirectoryListBox استفاده کنید راه حل همونی هست که جناب Chatbaz گفتن ...

موفق باشید ...

com.ha.za
دوشنبه 03 اسفند 1388, 23:26 عصر
ممنون حل شد