📄 unitmain.~pas
字号:
unit Unitmain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg, DB, ADODB, DBXpress, Grids, DBGrids,
DBClient, SimpleDS, SqlExpr, FMTBcd, DBCtrls;
type
Tmain = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Panel4: TPanel;
Button3: TButton;
Panel5: TPanel;
Panel6: TPanel;
Image1: TImage;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Image2: TImage;
Button8: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DataSource2: TDataSource;
DBGrid2: TDBGrid;
DataSource3: TDataSource;
DataSource4: TDataSource;
StaticText2: TStaticText;
Panel9: TPanel;
Note: TStaticText;
Panel7: TPanel;
StaticText1: TStaticText;
DBGrid3: TDBGrid;
DBGrid4: TDBGrid;
Panel8: TPanel;
DBNavigator1: TDBNavigator;
DBNavigator2: TDBNavigator;
Panel10: TPanel;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
ListBox1: TListBox;
Button13: TButton;
Button14: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
connection: array[1..10] of TSQLConnection;
procedure auto_Initialize();
procedure main();
procedure Code_bak();
procedure Get_Code();
procedure Get_Code_Change();
procedure Dispose_Code_Delete();
procedure Dispose_Code_Add();
procedure dispose_Dim_layer();
procedure Auto_finish();
end;
var
main: Tmain;
firstLogin: Boolean = true;
logid: Integer;
implementation
uses Unitleave, Unitlogin, DataModule;
{$R *.dfm}
//function MySQLCallBack(CallType: TRACECat; CBInfo: Pointer): CBRType; stdcall;
//var
// CBI: pSQLTRACEDesc;
//begin
// Result := cbrUSEDEF;
// if CBIn
procedure Tmain.Button1Click(Sender: TObject);
var
number: Integer;
begin
DataModule.DataModule1.SimpleDataSet1.Active:=true;
Panel3.Visible:=false;
Panel4.Visible:=true;
Panel5.Visible:=false;
Panel6.Visible:=false;
Panel7.Visible:=false;
Panel8.Visible:=false;
Panel9.Visible:=false;
// number:= DataModule.DataModule1.SimpleDataSet1.RecordCount;
// showmessage(inttostr(number));
end;
procedure Tmain.Button2Click(Sender: TObject);
begin
DataModule.DataModule1.SimpleDataSet2.Active:=true;
Panel3.Visible:=false;
Panel4.Visible:=false;
Panel5.Visible:=true;
Panel6.Visible:=false;
Panel7.Visible:=false;
Panel8.Visible:=false;
Panel9.Visible:=false;
end;
procedure Tmain.Button3Click(Sender: TObject);
begin
DataModule.DataModule1.SimpleDataSet3.Active:=true;
DataModule.DataModule1.SimpleDataSet4.Active:=true;
Panel3.Visible:=false;
Panel4.Visible:=false;
Panel5.Visible:=false;
Panel6.Visible:=true;
Panel7.Visible:=true;
Panel8.Visible:=true;
Panel9.Visible:=false;
end;
procedure Tmain.Button8Click(Sender: TObject);
begin
Unitleave.leave.Show;
end;
procedure Tmain.Button4Click(Sender: TObject);
begin
Panel3.Visible:=false;
Panel4.Visible:=false;
Panel5.Visible:=false;
Panel6.Visible:=false;
Panel7.Visible:=false;
Panel8.Visible:=false;
Panel9.Visible:=true;
// Unitnote.Note.Show;
// showmessage('开始自动维护!');
end;
procedure Tmain.main();
begin
auto_Initialize();
Code_bak();
Get_Code();
Get_Code_Change();
Dispose_Code_Delete();
Dispose_Code_Add();
dispose_Dim_layer();
Auto_finish();
end;
procedure Tmain.auto_Initialize();
var
number: Integer;
i: Integer;
ConnectionName: String;
DriverName: String;
GetDriverFunc: String;
LibraryName: String;
VendorLib: String;
DataBase: String;
User_Name: String;
Password: String;
TmpStr: String;
const
Finish: String = 'Finish';
System: String = 'System';
Lock: String = 'Lock';
user: String = '"User"';
begin
TmpStr := 'select ID, CONNECTIONNAME, DATABASE, "User", PASSWORD from ALLCONNECTIONNEW';
DataModule.DataModule1.SimpleDataSet5.Close;
DataModule.DataModule1.SimpleDataSet5.DataSet.CommandText:=TmpStr;
try
DataModule.DataModule1.SimpleDataSet5.Open;
number:= DataModule.DataModule1.SimpleDataSet5.RecordCount;
showmessage(intTostr(number));
if(number = 0) then
showmessage('数据源不存在!')
else
begin
DataModule.DataModule1.SimpleDataSet5.Next;
for i:=1 to number do
begin
ConnectionName := DataModule.DataModule1.SimpleDataSet5.FieldList.Fields[1].AsString;
DataBase := DataModule.DataModule1.SimpleDataSet5.FieldList.Fields[2].AsString;
User_Name := DataModule.DataModule1.SimpleDataSet5.FieldList.Fields[3].AsString;
Password := DataModule.DataModule1.SimpleDataSet5.FieldList.Fields[4].AsString;
if ConnectionName = 'OracleConnection' then
begin
DriverName := 'Oracle';
GetDriverFunc:= 'getSQLDriverORACLE';
LibraryName:= 'dbexpora.dll';
VendorLib:= 'oci.dll';
end
else if ConnectionName = 'DB2Connection' then
begin
DriverName := 'DB2';
GetDriverFunc:= 'getSQLDriverDB2';
LibraryName:= 'dbexpdb2.dll';
VendorLib:= 'db2cli.dll';
end;
try
connection[i] := TSQLConnection.Create(self);
connection[i].ConnectionName := ConnectionName;
connection[i].DriverName := DriverName;
connection[i].GetDriverFunc := GetDriverFunc;
connection[i].LibraryName := LibraryName;
connection[i].VendorLib := VendorLib;
connection[i].Params.Values['DataBase'] := DataBase;
connection[i].Params.Values['User_Name'] := User_Name;
connection[i].Params.Values['Password'] := Password;
connection[i].LoginPrompt := false;
connection[i].Connected := true;
except
on e:Exception do
messagedlg(e.message,mtinformation,[mbok],0);//如果执行异常则报错
end;
DataModule.DataModule1.SimpleDataSet5.Next;
end;
TmpStr := 'Update log set Result='''+Finish+'''where id = (select max(id) from log) and not exists (select 1 from LogCode where clbz is null)';
DataModule.DataModule1.SQLQuery1.Close;
DataModule.DataModule1.SQLQuery1.SQL.Clear;
DataModule.DataModule1.SQLQuery1.SQL.add(TmpStr);
try
DataModule.DataModule1.SQLQuery1.ExecSQL(false);
except
on e:Exception do
messagedlg(e.message,mtinformation,[mbok],0);//如果执行异常则报错
end;
TmpStr := 'select max(id) from log where Result='''+Finish+'''';
DataModule.DataModule1.SimpleDataSet5.Close;
DataModule.DataModule1.SimpleDataSet5.DataSet.CommandText:=TmpStr;
try
DataModule.DataModule1.SimpleDataSet5.Open;
// number:= DataModule.DataModule1.SimpleDataSet5.RecordCount;
if(DataModule.DataModule1.SimpleDataSet5.FieldList.Fields[0].AsInteger <> 0) then //而且log的第一条记录的oprator项不能为空
begin
// showmessage(intTostr(logid));
logid := DataModule.DataModule1.SimpleDataSet5.FieldList.Fields[0].AsInteger + 1;
end
else
begin
logid := 1;
// showmessage(intTostr(logid));
end;
except
on e:Exception do
messagedlg(e.message,mtinformation,[mbok],0);//如果执行异常则报错
end;
TmpStr := 'insert into log (ID, Operator, Result) values ('''+intTostr(logid)+''','''+System+''', '''+Lock+''')';
DataModule.DataModule1.SQLQuery1.Close;
DataModule.DataModule1.SQLQuery1.SQL.Clear;
DataModule.DataModule1.SQLQuery1.SQL.add(TmpStr);
try
DataModule.DataModule1.SQLQuery1.ExecSQL(false);
except
on e:Exception do
showmessage('手工维护还没有完成,请完成手工维护后再进行自动维护');//如果执行异常则报错
end;
end;
except
on e:Exception do
messagedlg(e.message,mtinformation,[mbok],0);//如果执行异常则报错
end;
end;
procedure Tmain.Code_bak();
var
TmpStr: String;
begin
TmpStr := 'delete from AllCodeDataBak';
end;
procedure Tmain.Get_Code();
begin
end;
procedure Tmain.Get_Code_Change();
begin
end;
procedure Tmain.Dispose_Code_Delete();
begin
end;
procedure Tmain.Dispose_Code_Add();
begin
end;
procedure Tmain.dispose_Dim_layer();
begin
end;
procedure Tmain.Auto_finish();
begin
end;
procedure Tmain.FormShow(Sender: TObject);
begin
if (firstLogin) then
begin
login.ShowModal;
firstLogin := false;
end;
end;
{
function MySQLCallBack(CallType: TRACECat; CBInfo: Pointer): CBRType; stdcall;
var
CBI: pSQLTRACEDesc;
begin
Result := cbrUSEDEF;
if CBInfo <> nil then
begin
CBI := pSQLTRACEDesc(CBInfo);
// frmMain.
end;
end;
}
procedure Tmain.Button13Click(Sender: TObject);
begin
note.Caption := '自动维护程序正在运行,请稍候...';
DataModule.DataModule1.SimpleDataSet5.Active:=true;
DataModule.DataModule1.SQLConnection2.SetTraceCallbackEvent(nil, 0);
DataModule.DataModule1.sqlmonitor1.Active := true;
main();
showmessage('自动维护结束!');
note.Caption := '自动维护程序运行期间,将不能做其他的维护工作!';
end;
procedure Tmain.Button14Click(Sender: TObject);
begin
listbox1.Items.Clear;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -