سلام
سعي كردم برنامه قبلي را كاملتر كنم و بزارم
برنامه قبلي خيلي ساده بود. و بيشتر براي اين كاربرد داشت كه بار اول كه ميخواهيم برنامه را در يك كامپيوتر استفاده كنيم database مورد نظرمون را اول بسازيم و بعد پايگاه داده مون را روش restore كنيم.
ولي اين برنامه براي اينكه كه backup هاي را كه گرفتيم بتونيم انتخاب و restore كنيم.
وقتي كه به database وصليم نميشه عمل restore را انجام داد و با پيغام database in use مواجه ميشيم. براي همين من تو برنامه اصلي اين كار را نميكنم و يه برنامه جدا براش ميسازم. البته ميشه تو همون برنامه اصلي هم گذاشت و ارتباط بقيه adoconnection ها را به database مورد نظر قطع و دوباره وصل كرد. ولي خب ساخت يه برنامه جدا راحتتره. حالا شما مختاريد
************************************************** ************
یک adocommand روی فرم بگذارید! سپس روی سه نقطه خصوصیconncetion string کلیک کرده. build کلیک کرده. microsoft OLE DB Provider for SQL Server را انتخاب کرده و next بزنید و use windows Nt را انتخاب کنید و next بزنید! test conection و ok و ok
دقت كنيد نام database را انتخاب نكنيد
يك ShellListView1 روي فرم بگذاريد براي انتخاب فايل مورد نظر.
ShellComboBox1 براي دسترسي راحتتر به درايوها
و خاصيت ShellComboBox مربوط به كنترل ShellListView1 را برابر ShellComboBox1 قرار دهيد
و يك button براي انجام restore كد آن به شرح زير است:
procedure TFrmRestore.Button2Click(Sender: TObject);
var
s:string;
begin
if ShellListView1.selectedfolder.PathName ='' then
ShowMessage('Please Select the file')
else
begin
s:=ExtractFileExt(ShellListView1.selectedfolder.Pa thName);
if Length(s)>0 then
ShowMessage('Type of the file is not valid')
else
begin
try
begin
with ADOCommand2 do
begin
CommandText:='RESTORE DATABASE MyDataBase FROM DISK='+QuotedStr (ShellListView1.selectedfolder.PathName);
execute
end;
ShowMessage('DataBase has Successfully Restore');
end;
except
ShowMessage('Please Close any releated Programs and Select a True type file');
end;
end;
end;
end;
if ShellListView1.selectedfolder.PathName ='' then چك ميكنه فايلي انتخاب شده است يا نه!
s:=ExtractFileExt(ShellListView1.selectedfolder.Pa thName);
if Length(s)>0 then
ShowMessage('Type of the file is not valid')
چك ميكند فايل انتخابي از نوع ديگري مثلا عكس نباشد. ولي در اينجا يك مشكل دارد. اگر يك فولدر انتخاب شود تشخيص نمي دهد و باعث بروز خطا مي شود. از آنجا كه فايل بك آپ اس كيو ال داراي پسوند نيست. من نتونستم براي افتراق اون از يك فولدر راهي پيدا كنم
with ADOCommand2 do
begin
CommandText:='RESTORE DATABASE MyDataBase FROM DISK='+QuotedStr (ShellListView1.selectedfolder.PathName);
Execute
و كد بالا هم عمل resotore را انجام ميدهد.
************************************************** ******************
خب اين برنامه حتما هنوز ايرادات و نواقصي داره كه به بزرگي خودتون ببخشيد
متاسفانه من اكسس بلد نيستم و درباره ش نميتونم چيزي بگم. و در زمينه شبكه هم خيلي بي سوادم و بيشتر نياز به راهنمايي ديگران دارم.
موفق باشيد
التماس دعا
پ.ن. فايل نمونه ضميمه شده