高手请问:怎样用DELPHI备份和还原ACCESS数据库?可不可以给出源代码?
解决方案 »
- 如何让变量监视窗体里的变量值不被优化掉呢?
- 如何在sql server2000中存储image类型图片
- epson打印驱动影响delphi数据连接
- 如何删除动态产生的tabsheet,谢谢!
- 如何把图标加到状态栏里面!
- 如何在linux系统下运行Delphi的执行文件,除了用Kylix移植之外,能不能有其他方法在linux运行Delphi可执行文件呢?????
- 高分求解,,阻塞方式的SOCKET,读取过程怎么写??
- 怎样更快的忘记一个人?
- TDBGridEh SortMarker 怎么用
- 解决照片中电话号码识别问题
- 能不能在主窗体中调用非自动创建的窗体啊?
- 在delphi中如何判断一个线程是否已经终止?急!!!!!!
.............其实就是copy
ShowMessage('ok');
unit uDataPrepare;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, IdGlobal, ExtCtrls,
shellapi, ComCtrls;
type
TDataPrepareForm = class(TForm)
GroupBox1: TGroupBox;
BitBtn6: TBitBtn;
GroupBox2: TGroupBox;
BitBtn5: TBitBtn;
Label1: TLabel;
Edit1: TEdit;
BitBtn4: TBitBtn;
OpenDialog1: TOpenDialog;
BitBtn1: TBitBtn;
StatusBar1: TStatusBar;
BitBtn3: TBitBtn;
Label2: TLabel;
Memo1: TMemo;
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
DataPrepareForm: TDataPrepareForm;
Path:string;
implementationuses uMain, uDataModu, uPubvar;{$R *.dfm}
//拷贝文件
Procedure FileCopy( Const sourcefilename, targetfilename: String );
Var
S,T: TFileStream;
Begin
S := TFileStream.Create( sourcefilename, fmOpenRead );
try
T := TFileStream.Create( targetfilename,fmOpenWrite or fmCreate );
try
T.CopyFrom(S, S.Size ) ;
finally
T.Free;
end;
finally
S.Free;
end;
End;
//备份数据库
procedure TDataPrepareForm.BitBtn6Click(Sender: TObject);
var
sf, df: string;
F: TShFileOpStruct;
begin
//检查其他窗口是否已经关闭
with Mainform do
begin
if MDIChildCount > 1 then
begin
showmessage('请将所有录入、查询窗口关闭!');
exit;
end;
end;
if trim(edit1.Text)='' then
begin
application.MessageBox('请先选择要备份的路径!','系统提示',16);
edit1.SetFocus;
exit;
end;
DataMod.ADOConnect.Connected := false;
StatusBar1.Panels[0].Text := '正在备份,请稍等!';
StatusBar1.Panels[0].Text:='';
sf := path+'notebook.dat';
df := edit1.Text;
F.wnd := Handle;
F.wFunc := FO_Copy; {操作方式}
F.pFrom := pchar(sf + #0#0);
F.pTo := pchar(df + #0#0);
F.fFlags := FOF_CONFIRMMOUSE;
//F.fFlags:=FOF_ALLOWUNDO OR FOF_RENAMEONCOLLISION; {操作选项}
if ShFileOperation(F) <> 0 then
MessageDlg('备份失败!', mtInformation, [mbOk], 0)
else
MessageDlg('备份成功!', mtInformation, [mbOk], 0);
StatusBar1.Panels[0].Text:= '';
end;procedure TDataPrepareForm.BitBtn4Click(Sender: TObject);
begin
OpenDialog1.Execute;
Edit1.Text:=OpenDialog1.FileName;
end;
//还原数据库
procedure TDataPrepareForm.BitBtn3Click(Sender: TObject);
var
sf, df: string;
F: TShFileOpStruct;
begin
//检查其他窗口是否已经关闭
with Mainform do
begin
if MDIChildCount > 1 then
begin
showmessage('请将所有录入、查询窗口关闭!');
exit;
end;
end;
if trim(edit1.Text)='' then
begin
application.MessageBox('请先选择要恢复的路径!','系统提示',16);
edit1.SetFocus;
exit;
end;
DataMod.ADOConnect.Connected := false;
StatusBar1.Panels[0].Text := '正在恢复数据,请稍等!';
sf := edit1.Text;
df := path+'notebook.dat';
if not fileexists(sf) then begin
showmessage('备份数据库没找到!');
exit;
end;
F.wnd := Handle;
F.wFunc := FO_Copy; {操作方式}
F.pFrom := pchar(sf + #0#0);
F.pTo := pchar(df + #0#0);
F.fFlags := FOF_CONFIRMMOUSE;
//F.fFlags:=FOF_ALLOWUNDO OR FOF_RENAMEONCOLLISION; {操作选项}
if ShFileOperation(F) <> 0 then
MessageDlg('恢复失败!', mtInformation, [mbOk], 0)
else
MessageDlg('恢复成功!', mtInformation, [mbOk], 0);
StatusBar1.Panels[0].Text:='';
end;
procedure TDataPrepareForm.FormCreate(Sender: TObject);
begin
path:=ExtractFilePath(Application.ExeName);
end;procedure TDataPrepareForm.BitBtn1Click(Sender: TObject);
begin
edit1.clear;
DataMod.ADOConnect.Connected:=true;
close;
end;
//修复和压缩数据库
procedure TDataPrepareForm.BitBtn5Click(Sender: TObject);
begin
begin
//检查其他窗口是否已经关闭
with Mainform do
begin
if MDIChildCount > 1 then
begin
showmessage('请将所有录入、查询窗口关闭!');
exit;
end;
end;
DataMod.ADOConnect.Connected := false;
// adodm.ADOConnection2.Connected := false;//关闭所有查询和数据表
DataMod.Person_detailADOQu.close;
DataMod.GroupADOQu.Close;
DataMod.PubADOQu.Close;
DataMod.PerBusiADOQu.Close;
DataMod.PerInfoADOQ.Close;
DataMod.UserADOQu.Close;
DataMod.TempADOQ.Close;
StatusBar1.Panels[0].Text := '正在修复压缩,请稍等!';//
if CompactDatabase('notebook.dat','') = false then
MessageDlg('修复过程出现错误!!', mtWarning, [mbOk], 0)
else MessageDlg('修复完毕!', mtInformation, [mbOk], 0);end;
end;end.