?? mainunit.pas
字號:
unit MainUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, TFlatTabControlUnit, TFlatEditUnit, ImgList,
ComCtrls, TFlatGroupBoxUnit, TFlatRadioButtonUnit, TFlatComboBoxUnit,
TFlatButtonUnit, TFlatSplitterUnit, TFlatPanelUnit, TFlatMemoUnit,
TFlatHintUnit, Menus, CoolTrayIcon, TFlatCheckBoxUnit, DBXpress, FMTBcd,
DB, SqlExpr, Buttons, ztvregister, ztvBase, ztvZip,DateUtils,StrUtils,IniFiles,Registry,
ADODB,TlHelp32;
type
TfrmMain = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
ImageList1: TImageList;
FlatGroupBox1: TFlatGroupBox;
frbOracle9i1: TFlatRadioButton;
frbOracle811: TFlatRadioButton;
frbOracle10g1: TFlatRadioButton;
FlatGroupBox2: TFlatGroupBox;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
fedtUserName: TFlatEdit;
fedtPassword: TFlatEdit;
fedtSvcName: TFlatEdit;
FlatPanel1: TFlatPanel;
FlatGroupBox3: TFlatGroupBox;
frbExpFull: TFlatRadioButton;
frbExpUser: TFlatRadioButton;
frbExpTable: TFlatRadioButton;
FlatGroupBox4: TFlatGroupBox;
FlatSplitter1: TFlatSplitter;
FlatSplitter2: TFlatSplitter;
FlatGroupBox5: TFlatGroupBox;
Label3: TLabel;
Label4: TLabel;
Label2: TLabel;
fbtnExpSQL: TFlatButton;
fbtnExport: TFlatButton;
fedtExpUser: TFlatEdit;
fedtExpTables: TFlatEdit;
fedtExpFile: TFlatEdit;
FlatHint1: TFlatHint;
FlatGroupBox7: TFlatGroupBox;
frbOracle9i2: TFlatRadioButton;
frbOracle812: TFlatRadioButton;
frbOracle10g2: TFlatRadioButton;
FlatGroupBox8: TFlatGroupBox;
Label1: TLabel;
Label5: TLabel;
Label9: TLabel;
fedtUserName2: TFlatEdit;
fedtUserPassword2: TFlatEdit;
fedtScvName2: TFlatEdit;
FlatPanel2: TFlatPanel;
FlatSplitter3: TFlatSplitter;
FlatSplitter4: TFlatSplitter;
FlatGroupBox9: TFlatGroupBox;
frbImpFull: TFlatRadioButton;
frbImpUser: TFlatRadioButton;
frbImpTables: TFlatRadioButton;
FlatGroupBox10: TFlatGroupBox;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
fedtImpUser: TFlatEdit;
fedtImpTables: TFlatEdit;
fedtImpFile: TFlatEdit;
FlatGroupBox11: TFlatGroupBox;
fbtnImpSQL: TFlatButton;
fbtnImport: TFlatButton;
frbImpIgnore: TFlatRadioButton;
frbImpCreateUser: TFlatRadioButton;
Label13: TLabel;
Label14: TLabel;
fedtNewUser: TFlatEdit;
fedtNewPassword: TFlatEdit;
CoolTrayIcon: TCoolTrayIcon;
ImageList2: TImageList;
PoMinfo: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
fbtnImportFile: TFlatButton;
fcbGetFileName: TFlatCheckBox;
OpenDialog: TOpenDialog;
SQLQuery: TSQLQuery;
FlatPanel3: TFlatPanel;
FlatGroupBox12: TFlatGroupBox;
fmeoExpSQL: TFlatMemo;
FlatGroupBox6: TFlatGroupBox;
FlatGroupBox13: TFlatGroupBox;
FlatGroupBox14: TFlatGroupBox;
FlatPanel4: TFlatPanel;
FlatButton1: TFlatButton;
FlatGroupBox15: TFlatGroupBox;
Label15: TLabel;
fedtTimeUserName: TFlatEdit;
Label16: TLabel;
fedtTimerUserPass: TFlatEdit;
Label17: TLabel;
fedtTimerUserScv: TFlatEdit;
Panel1: TPanel;
Timer1: TTimer;
Image2: TImage;
Label18: TLabel;
EdtExpExeFile: TEdit;
BtnExpExeFile: TBitBtn;
BtnExpExeFileD: TSpeedButton;
Label19: TLabel;
edtBakupPath: TEdit;
btnBakUpD: TBitBtn;
btnBakup: TSpeedButton;
chkZIPFile: TFlatCheckBox;
chkFullFile: TFlatCheckBox;
chkGrants: TFlatCheckBox;
chkIndexes: TFlatCheckBox;
chkConstraints: TFlatCheckBox;
chkAutoNamed: TFlatCheckBox;
Label20: TLabel;
EdtRunTime: TDateTimePicker;
Timer2: TTimer;
ZipComponent: TZip;
N3: TMenuItem;
N4: TMenuItem;
SQLConn: TSQLConnection;
Label21: TLabel;
fcbIncType: TFlatComboBox;
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure CoolTrayIconMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
procedure fbtnExpSQLClick(Sender: TObject);
procedure frbExpFullClick(Sender: TObject);
procedure frbExpUserClick(Sender: TObject);
procedure frbExpTableClick(Sender: TObject);
procedure fbtnExportClick(Sender: TObject);
procedure fcbGetFileNameClick(Sender: TObject);
procedure fedtUserNameExit(Sender: TObject);
procedure fedtPasswordExit(Sender: TObject);
procedure fedtSvcNameExit(Sender: TObject);
procedure fbtnImpSQLClick(Sender: TObject);
procedure fbtnImportClick(Sender: TObject);
procedure frbImpFullClick(Sender: TObject);
procedure frbImpUserClick(Sender: TObject);
procedure frbImpTablesClick(Sender: TObject);
procedure fbtnImportFileClick(Sender: TObject);
procedure frbImpIgnoreClick(Sender: TObject);
procedure frbImpCreateUserClick(Sender: TObject);
procedure fedtUserName2Exit(Sender: TObject);
procedure fedtUserPassword2Exit(Sender: TObject);
procedure fedtScvName2Exit(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Timer2Timer(Sender: TObject);
procedure BtnExpExeFileClick(Sender: TObject);
procedure btnBakUpDClick(Sender: TObject);
procedure BtnExpExeFileDClick(Sender: TObject);
procedure btnBakupClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FlatButton1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
FileHandle : THandle;
ConfigFile: String;
ExpExeFile, BakupFile,ExpLogsFile: String;
RunTime: String;
Grants, Full, Ziped, AutoNamed,Indexes,Constraints: Boolean;
procedure SysButtonMsg(var Msg: TMessage); message WM_SYSCOMMAND;
procedure ReadConfig;
procedure WriteConfig;
procedure SetConfig(InMem: Boolean);
public
{ Public declarations }
cmdstr,InputMode,OutPutMode,IgnoreMode,ToUserMode :string;
UserName,UserPassword,UserService : string;
FileStr : string;
//關(guān)于的操作
imgTemp: TImage;
FTop: Integer;
procedure AddSQLScript_Exp;
procedure AddSQLScript_Imp;
procedure SetOracleClient_Exp;
procedure SetOracleClient_Imp;
procedure SetDataInputMode;
procedure UpdateText; //更新顯示信息
procedure DrawText; //畫顯示信息
//導(dǎo)出程序
function GetOraleHome(CanExp : Boolean;strStyle:string): String;
procedure RunCmdLine(const Cmd: String; var ExitCode: DWORD; var ErrMessage: String; var OutMessage: String);
procedure WriteToFile(const FileName, Content: String);
//退出進程
procedure EndProcess(AExeName:string);
end;
var
frmMain: TfrmMain;
AppPath : string;
implementation
{$R *.dfm}
procedure TfrmMain.N1Click(Sender: TObject);
begin
CoolTrayIcon.ShowMainForm;
end;
procedure TfrmMain.N2Click(Sender: TObject);
begin
if PageControl1.ActivePageIndex = 0 then
EndProcess('exp.exe')
else if PageControl1.ActivePageIndex = 1 then
EndProcess('imp.exe')
else if PageControl1.ActivePageIndex = 2 then
EndProcess('exp.exe');
Application.Terminate;
end;
procedure TfrmMain.CoolTrayIconMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if Assigned(PoMinfo) then
if not PoMinfo.AutoPopup then
MessageDlg('The popup menu is disabled.', mtInformation, [mbOk], 0);
end;
procedure TfrmMain.fbtnExpSQLClick(Sender: TObject);
var
BakupDir : String;
begin
if PageControl1.ActivePageIndex = 0 then
begin
BakupDir := AppPath + 'Bakup\';
//如果沒有Bakup文件夾,則自動創(chuàng)建
if not DirectoryExists(BakupDir) then ForceDirectories(BakupDir);
if fedtUserName.Text <> '' then
UserName := Trim(fedtUserName.Text);
if fedtPassword.Text <> '' then
UserPassword := Trim(fedtPassword.Text);
if fedtSvcName.Text <> '' then
UserService := Trim(fedtSvcName.Text);
{if trim(LogStr) = '' then
LogStr := 'Log='+BakupDir+'Exp_'+UserName+'_'+FormatDateTime('YYYYMMDD-HHMMSS',Now)+'.log';}
if fcbGetFileName.Checked then
begin
fedtExpFile.Enabled := False;
fedtExpFile.ColorFlat := clMoneyGreen;
FileStr := 'File='+BakupDir+'Exp_'+UserName+'_'+FormatDateTime('YYYYMMDD-HHMMSS',Now)+'.dmp';
ExpLogsFile := BakupDir+'Exp_'+UserName+'_'+FormatDateTime('YYYYMMDD-HHMMSS',Now)+'.dmp';
end
else
begin
fedtExpFile.Enabled := True;
fedtExpFile.ColorFlat := clWhite;
FileStr := 'File='+BakupDir+'Exp_'+Trim(fedtExpFile.Text)+'_'+FormatDateTime('YYYYMMDD-HHMMSS',Now)+'.dmp';
ExpLogsFile := BakupDir+'Exp_'+UserName+'_'+FormatDateTime('YYYYMMDD-HHMMSS',Now)+'.dmp';
end;
SetOracleClient_Exp;
end;
end;
procedure TfrmMain.AddSQLScript_Exp; //導(dǎo)出文件腳本
begin
fmeoExpSQL.Clear;
fmeoExpSQL.Text := cmdstr+' '+UserName+'/'+UserPassword+'@'+UserService+' '+OutputMode+' '+FileStr;
end;
procedure TfrmMain.AddSQLScript_Imp;
begin
fmeoExpSQL.Clear;
fmeoExpSQL.Text := cmdstr+' '+UserName+'/'+UserPassword+'@'+UserService+' '+InputMode+' '+IgnoreMode+' '+ToUserMode+' '+FileStr;
end;
procedure TfrmMain.SetOracleClient_Exp;
begin
if frbOracle10g1.Checked then
cmdstr := GetOraleHome(True,'');
if frbOracle9i1.Checked then
cmdstr := GetOraleHome(True,'');
if frbOracle811.Checked then
cmdstr := GetOraleHome(True,'');
if frbExpFull.Checked then
begin
OutPutMode := 'FULL=Y';
fedtExpUser.Enabled := False;
fedtExpTables.Enabled := False;
fedtExpUser.ColorFlat := clMoneyGreen;
fedtExpTables.ColorFlat := clMoneyGreen;
end
else if frbExpUser.Checked then
begin
OutPutMode := 'Owner=('+Trim(fedtExpUser.Text)+')';
fedtExpUser.Enabled := True;
fedtExpTables.Enabled := False;
fedtExpUser.ColorFlat := clWhite;
fedtExpTables.ColorFlat := clMoneyGreen;
end
else if frbExpTable.Checked then
begin
OutPutMode := 'TABLES=('+Trim(fedtExpTables.Text)+')';
fedtExpUser.Enabled := False;
fedtExpTables.Enabled := True;
fedtExpUser.ColorFlat := clMoneyGreen;
fedtExpTables.ColorFlat := clWhite;
end;
//寫入腳本
AddSQLScript_Exp;
end;
procedure TfrmMain.frbExpFullClick(Sender: TObject);
begin
SetOracleClient_Exp;
end;
procedure TfrmMain.frbExpUserClick(Sender: TObject);
begin
SetOracleClient_Exp;
end;
procedure TfrmMain.frbExpTableClick(Sender: TObject);
begin
SetOracleClient_Exp
end;
procedure TfrmMain.fbtnExportClick(Sender: TObject);
var
Year, Month, Day, Hour, Min, Sec, MSec: Word;
CmdLine : string;
ExitCode: DWORD;
ErrMessage, OutMessage: String;
SL : TStringList;
expLogFile : string;
begin
if PageControl1.ActivePageIndex = 0 then
begin
//導(dǎo)出SQL
fbtnExpSQLClick(Sender);
//CmdLine := cmdstr +' '+USERNAME+'/'+userPassword+'@'+UserService+' '+OutPutMode+' '+FileStr+' '+LogStr;
CmdLine := cmdstr +' '+USERNAME+'/'+userPassword+'@'+UserService+' '+OutPutMode+' '+FileStr;
DecodeDateTime(Now, Year, Month, Day, Hour, Min, Sec, MSec);
CoolTrayIcon.ShowBalloonHint('提示', Format('[%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d]', [Year, Month, Day, Hour, Min, Sec]) +
' 開始導(dǎo)出數(shù)據(jù)......', bitInfo, 10);
Application.ProcessMessages;
//運行導(dǎo)出命令
RunCmdLine(CmdLine, ExitCode, ErrMessage, OutMessage);
//記錄日志
Application.ProcessMessages;
expLogFile := ChangeFileExt(ExpLogsFile,'.log');
SL := TStringList.Create;
try
SL.Add('//********************** 導(dǎo)出命令行 *****************************//');
SL.Add('');
SL.Add(CmdLine);
SL.Add('');
SL.Add('//********************** 命令行輸出 *****************************//');
SL.Add(OutMessage);
SL.SaveToFile(expLogFile);
finally
FreeAndNil(SL);
end;
DecodeDateTime(Now, Year, Month, Day, Hour, Min, Sec, MSec);
CoolTrayIcon.ShowBalloonHint('提示', Format('[%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d]', [Year, Month, Day, Hour, Min, Sec]) +
' 數(shù)據(jù)導(dǎo)出完成!', bitInfo, 10);
end;
end;
procedure TfrmMain.fcbGetFileNameClick(Sender: TObject);
begin
if fcbGetFileName.Checked then
begin
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -