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

📄 unitmain.~pas

📁 数据仓库维表及参照表维护系统
💻 ~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 + -