📄 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;
//关于的操作
imgTemp: TImage;
FTop: Integer;
procedure AddSQLScript_Exp;
procedure AddSQLScript_Imp;
procedure SetOracleClient_Exp;
procedure SetOracleClient_Imp;
procedure SetDataInputMode;
procedure UpdateText; //更新显示信息
procedure DrawText; //画显示信息
//导出程序
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文件夹,则自动创建
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; //导出文件脚本
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
//导出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]) +
' 开始导出数据......', bitInfo, 10);
Application.ProcessMessages;
//运行导出命令
RunCmdLine(CmdLine, ExitCode, ErrMessage, OutMessage);
//记录日志
Application.ProcessMessages;
expLogFile := ChangeFileExt(ExpLogsFile,'.log');
SL := TStringList.Create;
try
SL.Add('//********************** 导出命令行 *****************************//');
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]) +
' 数据导出完成!', bitInfo, 10);
end;
end;
procedure TfrmMain.fcbGetFileNameClick(Sender: TObject);
begin
if fcbGetFileName.Checked then
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -