📄 unit22.pas
字号:
unit Unit22;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons,Unit2, ComCtrls,Unit23, FileCtrl;
type
TForm22 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
BitBtn1: TBitBtn;
StaticText1: TStaticText;
BitBtn2: TBitBtn;
StaticText2: TStaticText;
StaticText3: TStaticText;
BitBtn3: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
StaticText4: TStaticText;
StaticText5: TStaticText;
FileListBox1: TFileListBox;
BitBtn8: TBitBtn;
BitBtn9: TBitBtn;
BitBtn10: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure CompactAccess(dbName :string;JetId:string='4.0');
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn9Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn10Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
pathstr :string;
end;
var
Form22: TForm22;
implementation
uses comobj;
{$R *.dfm}
//压缩数据库
procedure TForm22.BitBtn1Click(Sender: TObject);
var
dbname :string;
begin
StaticText1.Caption :='正在压缩数据库...';
if DataModule2.ADOConnection1.Connected =true then
DataModule2.ADOConnection1.Connected :=false;
Sleep(500);
dbname :=ExtractFilePath(Application.ExeName )+'house.mdb'; //取得当前数据库所在路径
CompactAccess(dbname); //压缩
if DataModule2.ADOConnection1.Connected =false then
DataModule2.ADOConnection1.Connected :=true;
StaticText1.Caption :='数据库压缩成功!';
end;
//压缩数据库函数
procedure TForm22.CompactAccess(dbName :string;JetId:string='4.0');
var
AVariant :Variant;
begin
if FileExists(dbName+'.tmp') then DeleteFile(DbName+'.tmp'); //是否存在相同的.tmp的临时文件,有则删了
AVariant := CreateOleObject('JRO.JetEngine');
AVariant.CompactDataBase('Provider=Microsoft.Jet.OLEDB.'+JetId+';Jet OLEDB:Database Password=hjp;Data Source='+
dbName,
'Provider=Microsoft.Jet.OLEDB.'+JetId+';Data Source='+dbName+'.tmp');
DeleteFile(DbName);
ReNameFile(dbName+'.tmp',DbName); //把文件名改回来
end;
//调出路径选择窗口
procedure TForm22.BitBtn2Click(Sender: TObject);
begin
Application.CreateForm(TForm23,Form23);
Form23.Label1.Caption :='请选择备份路径:';
Form23.ShowModal;
Form23.Free ;
end;
//备份数据库
procedure TForm22.BitBtn3Click(Sender: TObject);
var
dbname :string;
newpath :string;
begin
BitBtn5.Enabled :=false;
StaticText3.Caption :='正在备份数据库...'; //先压缩数据库再备份
if DataModule2.ADOConnection1.Connected =true then
DataModule2.ADOConnection1.Connected :=false;
Sleep(500);
dbname :=ExtractFilePath(Application.ExeName )+'house.mdb';
StaticText3.Caption :='正在压缩数据库...';
CompactAccess(dbname);
// MessageBox(handle,'数据库压缩成功!','提示',MB_Ok+MB_ICONINFORMATION);
if DataModule2.ADOConnection1.Connected=true then
DataModule2.ADOConnection1.Connected :=false;
dbname:=pathstr+'\'+DateToStr(date)+'.bak';
newpath :=ExtractFilePath(Application.ExeName )+'house.mdb';
if FileExists(dbname) then DeleteFile(dbname);
CopyFile(Pchar(newpath),Pchar(dbname),true); //备份:自制过去
// MessageBox(handle,'数据库备份成功!','提示',MB_OK+MB_ICONINFORMATION);
if DataModule2.ADOConnection1.Connected=false then
DataModule2.ADOConnection1.Connected :=true;
StaticText3.Caption :='备份成功!';
BitBtn5.Enabled :=true;
end;
procedure TForm22.BitBtn5Click(Sender: TObject);
begin
Close;
end;
//还原数据库
procedure TForm22.BitBtn9Click(Sender: TObject);
var
dbname,dbbname :string;
begin
Bitbtn9.Enabled :=false;
BitBtn8.Enabled :=false;
if MessageBox(self.handle,'确认要还原数据么?','提示',MB_YESNO+MB_ICONINFORMATION)=IDYES then
begin
StaticText5.Caption :='正在还原数据库...';
if DataModule2.ADOConnection1.Connected =true then
DataModule2.ADOConnection1.Connected :=false;
dbname:=ExtractFilePath(Application.ExeName )+'house.mdb';
dbbname:=FileListBox1.FileName ;
if not FileExists(dbbname) then
MessageBox(self.Handle ,'没有备份的数据库,不能还原!','提示',MB_OK+MB_ICONINFORMATION)
else
begin
CopyFile(Pchar(dbbname),Pchar(dbname),true); //还原:将原备份的数据库自制过来
//MessageBox(handle,'数据库还原成功!','提示',MB_OK+MB_ICONINFORMATION);
end;
if DataModule2.ADOConnection1.Connected =false then
DataModule2.ADOConnection1.Connected :=true;
StaticText5.Caption :='还原成功!';
BitBtn8.Enabled :=true;
end;
end;
procedure TForm22.BitBtn6Click(Sender: TObject);
begin
Application.CreateForm(TForm23,Form23);
Form23.Label1.Caption :='请选择还原路径:';
Form23.ShowModal;
Form23.Free ;
end;
procedure TForm22.BitBtn8Click(Sender: TObject);
begin
close;
end;
procedure TForm22.BitBtn10Click(Sender: TObject);
begin
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -