PDA

View Full Version : سوال: بك اپ و ريستور



amir190d
دوشنبه 11 شهریور 1387, 09:26 صبح
با سلام خدمت دوستان عزيز ببخشيد پست جديد زدم من مقاله تو سايت در مورد بك اپ و ريستور در بانك dbisam كه mojgan گفته بودن را خواندم ولي چيزي نفهميدم و در برنامه ام اجرا نشد اگه دوستان لطف كنند يك كد براي بك اپ و ريستور از بانك dbisam كه كار كنه بگزارند ممنون مي شوم با تشكر:لبخندساده::چشمک:

Hsimple11
دوشنبه 11 شهریور 1387, 10:26 صبح
کدهای آن هم در چند پست قرار داده شده است. چه مشکلی دارید ؟

http://www.barnamenevis.org/forum/showthread.php?t=6600&highlight=backup+dbisam
http://www.barnamenevis.org/forum/showthread.php?t=58732&highlight=backup+dbisam

amir190d
دوشنبه 11 شهریور 1387, 11:16 صبح
Table Name
-------------------------------------
Customers
Orders
Items

var
TablesToRestore: TStrings;
begin
TablesToRestore:=TStringList.Create;
try
with MyDatabase do
begin
DatabaseName:='MyDatabase';
Directory:='d:\temp';
with TablesToRestore do
Add('Customers');
if Restore('d:\temp\'+
StringReplace(DateToStr(Date),
'/','',[rfReplaceAll])+'.bkp',
TablesToRestore) then
ShowMessage('Restore was successful')
else
ShowMessage('Restore failed');
end;
finally
TablesToRestore.Free;
end;
end;
دوست عزيز من اين كد در يك كليد نوشتم ولي 2 تا 3 تا ارور مي گيره يكي اينكه مي گه
mydatabase چيزي به اين نام وجود نداره بعد مي گه databasename&directory&backup چيزي به اين صورت نيست اگه درست منظورش فهميده باشم اگه مي شه به من كه مبتدي هستم كمك كنيد ت بتونم بك اپ و ريسور در برنامه ام ايجاد كنم با تشكر از شما

amir190d
دوشنبه 11 شهریور 1387, 11:33 صبح
در ضمن دوست عزيز اين پيغام خطا را داد cannot perform this operation on an open dataset

Hsimple11
دوشنبه 11 شهریور 1387, 11:46 صبح
دوست گرامی، هر برنامه یا کدی را که می بینید باید با برنامه خود تطبیق دهید. جایگزین کردن نام کنترلها و توابعی که در هر برنامه اومده، باید با اسامی کنترلها و توابع تعریف شده شما عوض شود. مثلا در این کد بجای MyDataBase باید نام دیتابیس خودتون رو قرار بدید. همینطور در مورد فیلدها، مسیر ها و ...

در مورد پیغام خظا هم بایستی قبل از انجام هرگونه ویرایشی بر روی جدول خود آن را باز (Open) یا Active کنید.

و برای انجام اعمالی نظیر Restore باید دیتاست شما Close یا InActive باشد.

موفق باشید.

amir190d
دوشنبه 11 شهریور 1387, 11:57 صبح
دوست عزيز خيلي ممنون كه سوالات بي محتواي من را جواب مي دهي من اين كار را كردم ولي در قسمت بك اپ يك ارور داد dbisam engine error 11010 table or back up file 'customers does not exist

Hsimple11
دوشنبه 11 شهریور 1387, 12:03 عصر
خيلي ممنون كه سوالات بي محتواي من را جواب مي دهي

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

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

در این مثال یک جدول داریم با سه فیلد. که شما باید اون رو با جدول و فیلدهای خودتون بنویسید. مثلا فیلد Customers رو ندارید و فیلد خودتون رو جایگزین کنید.

amir190d
دوشنبه 11 شهریور 1387, 15:20 عصر
دوست عزيز من اين كدي كه بود به اينصورت نوشتم ولي باز هم همون ارور اولي را مي ده مي شه بررسي كنيد و درستش برام قرار بديد در ضمن اسم تيبل من هست new1 و اسم بانكم new1



procedure TForm17.Button1Click(Sender: TObject);
var
TablesToBackup: TStrings;
begin

TablesToBackup:=TStringList.Create;
try
Form2.DBISAMTable1.Active:=true;
with Form2.DBISAMTable1 do
begin
Form2.DBISAMTable1.DatabaseName:='new1';
Form2.DBISAMTable1.Database.Directory:='C:\newfold er1';
with TablesToBackup do
begin
Add('new1');
end;
if form2.DBISAMTable1.Database.Backup('c:\newfolder2' +
StringReplace(DateToStr(Date),
'/','',[rfReplaceAll])+'.bkp',
'Daily Backup for '+DateToStr(Date),6,
TablesToBackup) then
ShowMessage('Backup was successful')
else
ShowMessage('Backup failed');
end;
finally
TablesToBackup.Free;
end;
end;


با تشكر از لطفتان

amir190d
دوشنبه 11 شهریور 1387, 17:38 عصر
كسي از دوستان نيست من كمك كنه در مورد كد بالا؟

Hsimple11
دوشنبه 11 شهریور 1387, 18:14 عصر
چه کمکی؟!

از این کد واضح تر :


var
TablesToBackup: TStrings;
begin
TablesToBackup:=TStringList.Create;
try
with MyDatabase do
begin
DatabaseName:='MyDatabase';
Directory:='d:\temp';
with TablesToBackup do
begin
Add('Customers');
Add('Orders');
Add('Items');
end;
if Backup('d:\temp\'+
StringReplace(DateToStr(Date),
'/','',[rfReplaceAll])+'.bkp',
'Daily Backup for '+DateToStr(Date),6,
TablesToBackup) then
ShowMessage('Backup was successful')
else
ShowMessage('Backup failed');
end;
finally
TablesToBackup.Free;
end;
end;

ببینید چه قسمتهایی را باید جایگزین کنید.

amir190d
دوشنبه 11 شهریور 1387, 19:46 عصر
دوست عزيز به لطف شما درست شد خيلي خيلي ممنون كه به من مبتدي كمك كرديد ولي يك مشكل كوچك وجود دارد اونم اينكه در كد دوستمانmojgan استفاده كردم ولي در اخر كدش يك خط وجود داشت كه اطلا نه در دلفي هست نه در dbisam بجاش چي بزارم اينم كد


ActiveDataSets(False,true)

Hsimple11
دوشنبه 11 شهریور 1387, 22:29 عصر
تابع خاصی نیست. فقط دیتاست های شما را Active میکند. میتونید بجاش خاصیت Active دیتاست خودتون رو True کنید. یا اون رو Open کنید.

amir190d
سه شنبه 12 شهریور 1387, 01:32 صبح
سلام دوست عزيز واقعا شرمنده كه اينقدر سوال مي كنم دارم ديونه مي سم حالا كه بك اپ درست شود تو ريستور گير مي ده من اين كد نوشتم اينم پيغام خطا خواهش مي كنم اينو كمكم كنيد ت اين پروژ هام تموم بشه با تشكر فراوان از شما

procedure TForm18.Button1Click(Sender: TObject);
var
ListOfTablesBackUp:Tstrings;
begin
try
if OpenDialog1.Execute then
begin
ListOfTablesBackUp:=TStringList.Create;
ListOfTablesBackUp:=TStringList.Create;
ListOfTablesBackUp.Add('abfa1');//0
// ListOfTablesBackUp.Add('Com');//1
//... and other table
with Form2.DBISAMDatabase1 do
begin
// Form2.DBISAMDatabase1.Close;//this function close all tables
form2.DBISAMDatabase1.Connected:=false;
form2.DBISAMDatabase1.Directory:=ExtractFileDir(Ap plication.ExeName)+'C:newfolder1';//path of database folder
form2.DBISAMDatabase1.Open;
form2.DBISAMDatabase1.Connected:=true;
//only if use DBISAMUpdateSQL component use
{MainForm.DBISAMUpdateSQL1.SQL[ukDelete].Clear;
MainForm.DBISAMUpdateSQL1.SQL[ukModify].Clear;
MainForm.DBISAMUpdateSQL1.SQL[ukInsert].Clear;}
if form2.DBISAMDatabase1.Restore(OpenDialog1.FileName ,ListOfTablesBackUp) then
begin

ShowMessage('ÚãáíÇÊ ÈÇÒíÇÈí ÈÇ ãæÝÞíÊ ÇäÌÇã ÔÏ, ')
end
else
begin
ShowMessage('ÚãáíÇÊ ÈÇÒíÇÈí ÈÇ Ô~ÓÊ ãæÇÌå ÔÏ');
// Form2.DBISAMDatabase1.Close;//Close all tabales
end;
end;
ListOfTablesBackUp.Free;
end;


except
ShowMessage('ÚãáíÇÊ ÈÇÒíÇÈí ÈÇ Ô~ÓÊ ãæÇÌå ÔÏ');
end;

end;





اينم پيغام خطا dbisam engine error #11047 unknown operating system error 11047 occurred with the table or backup file c:\newfolder1 'dbisam.lck" . process stopped

amir190d
سه شنبه 12 شهریور 1387, 10:15 صبح
كس از دوستان مي تونه اين مشكل منو بر طرف كنه؟

Hsimple11
سه شنبه 12 شهریور 1387, 11:13 صبح
مسیر فایل BackUp خود را درست وارد کرده اید؟

amir190d
سه شنبه 12 شهریور 1387, 12:31 عصر
بله دوست عزيز مسير درستهه در ضمن من opendialog گزاشتم نمي دونم حالا چه كار كنم؟

amir190d
سه شنبه 12 شهریور 1387, 14:45 عصر
مثل اينكه كسي نميتونه عيب اين قسمت پيدا كنه فكر كنم بايد بي خيال ؟؟؟؟؟

Hsimple11
سه شنبه 12 شهریور 1387, 15:43 عصر
این خطا ناشی از ناسازگاری سیستم عامل شما با DBISAM است. شاید با تعویض نسخه آن حل شود.