⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 restore.~pas

📁 delphi开发的中国移动大客户管理系统,后台数据库为oracle
💻 ~PAS
字号:
unit restore;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, DBTables, Db, Buttons,FileCtrl;

type
  TRestoreFrm = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    Table1: TTable;
    Table2: TTable;
    BatchMove1: TBatchMove;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    ListBox1: TListBox;
    GroupBox2: TGroupBox;
    RB_Append: TRadioButton;
    RB_Copy: TRadioButton;
    Query: TQuery;
    Panel2: TPanel;
    LDir: TLabel;
    SpeedButton1: TSpeedButton;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
    FDir:string;
    procedure GetDirFile;
    //得到数据库服务器日期
    Function GetDbServerDate(DBName:string):string;
    Function ExecQuery(PQuery:TQuery;PSql:string):Boolean;
  public
    { Public declarations }
    //表名和电厂编号
    FTName:string;
  end;

var
  RestoreFrm: TRestoreFrm;

implementation

{$R *.DFM}
uses SelectDir;

procedure TRestoreFrm.FormCreate(Sender: TObject);
begin
  //数据备份在当前目录下\data子目录
  FDir:=ExtractFilePath(ParamStr(0))+'data\'+GetDbServerDate('db_vipdl');
  if not DirectoryExists(FDir) then ForceDirectories(FDir);
  LDir.Caption:=FDir;
end;
procedure TRestoreFrm.FormShow(Sender: TObject);
begin
   GetDirFile;
end;
procedure TRestoreFrm.BitBtn1Click(Sender: TObject);
var i:integer;
    p,l:integer;
    ftem:string;
begin
   for i:=0 to listbox1.Items.Count-1 do
   begin
      if listbox1.Selected[i] then
      begin
         table1.TableName:=FTName;

         //过滤要导入数据的电厂
         table2.Filtered:=true;
         
         table2.DatabaseName:=FDir;
         table2.TableName:=listbox1.Items.Strings[i];

         p:=pos('.',table2.TableName);
         l:=length(table2.TableName);
         ftem:=UpperCase(copy(table2.TableName,p+1,l-p+1));
         if ftem='DB' then
            table2.TableType:=ttParadox
         else if ftem='DBF' then
            table2.TableType:=ttDBase
         else
            table2.TableType:=ttASCII;

         BatchMove1.Source:=table2;
         BatchMove1.Destination:=table1;
         if RB_Append.Checked then
            BatchMove1.Mode:=batAppendUpdate
         else
         begin
            ExecQuery(Query,'delete from ' + FTName );
            BatchMove1.Mode:=batAppend;
         end;
         try
           BatchMove1.Execute;
         except
           Application.MessageBox('导入登录日志失败!','警告',MB_OKCANCEL+MB_ICONSTOP);
           close;
           exit;
         end;
         Application.MessageBox('导入登录日志成功!','警告',MB_OK+MB_ICONEXCLAMATION);
         close;
         exit;
      end;
   end;
   Application.MessageBox('没有选择文件!','警告',MB_OK+MB_ICONEXCLAMATION);
end;



procedure TRestoreFrm.SpeedButton1Click(Sender: TObject);
var dlg:TSelectDirFrm;
begin
  try
    dlg:=TSelectDirFrm.Create(self);
    if dlg.ShowModal = mrOk then
    begin
      LDir.Caption:=dlg.label1.Caption;
      FDir:=dlg.Label1.Caption;
      GetDirFile;
    end;
  finally
    dlg.free;
  end;  
end;
procedure TRestoreFrm.GetDirFile;
begin
   ListBox1.Clear;
   if FileExists(FDir+'\'+FTName+'.db') then
      ListBox1.Items.Add(FTName+'.db');

   if FileExists(FDir+'\'+FTName+'.dbf') then
      ListBox1.Items.Add(FTName+'.dbf');

   if FileExists(FDir+'\'+FTName+'.txt') then
      ListBox1.Items.Add(FTName+'.txt');
end;
function TRestoreFrm.GetDbServerDate(DBName: string): string;
var query:TQuery;
    Present: TDateTime;
    Year, Month, Day: Word;
    str:string;
begin
  try
      query:=TQuery.Create(nil);
  except
      exit;
  end;
  query.DatabaseName:=DBname;
  query.close;
  query.sql.Clear;
  query.sql.Add('select distinct sysdate from dual');
  try
     query.open;
  except
     exit;
  end;
  query.First;
  Present:=Query.Fields[0].AsDateTime;
  DecodeDate(Present, Year, Month, Day);
  str:=inttostr(year);
  if month<10 then str:=str+'0'+inttostr(month)
  else str:=str+inttostr(month);
  if day<10 then str:=str+'0'+inttostr(day)
  else str:=str+inttostr(day);
  result:=str;
  query.free;
end;

function TRestoreFrm.ExecQuery(PQuery: TQuery; PSql: string): Boolean;
begin
  Result:=true;
  PQuery.close;
  PQuery.sql.Clear;
  PQuery.Filtered:=false;
  PQuery.sql.add(PSql);
  try
    PQuery.ExecSQL;
  except
    Result:=false;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -