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

📄 main.pas

📁 ODAC 5.7.0.28
💻 PAS
字号:
unit Main;

interface

uses
{$IFDEF LINUX}
  SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls,
  QDBCtrls, QComCtrls, QExtCtrls, QGrids, QDBGrids, OdacClx,
{$ELSE}
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, ExtCtrls, Grids, DBGrids, StdCtrls, ToolWin, ComCtrls, OdacVcl,
{$ENDIF}
  Db, DBAccess, Ora, MemDS;

type
  TfmMain = class(TForm)
    OraSession1: TOraSession;
    OraQuery1: TOraQuery;
    DBGrid3: TDBGrid;
    DataSource1: TDataSource;
    ToolBar: TPanel;
    btOpen: TButton;
    btClose: TButton;
    Panel: TPanel;
    Splitter1: TSplitter;
    DBGrid1: TDBGrid;
    Splitter2: TSplitter;
    Splitter3: TSplitter;
    DBGrid2: TDBGrid;
    DBGrid4: TDBGrid;
    DataSource2: TDataSource;
    DataSource3: TDataSource;
    DataSource4: TDataSource;
    OraQuery2: TOraQuery;
    OraQuery3: TOraQuery;
    OraQuery4: TOraQuery;
    cbNonBlocking: TCheckBox;
    cbFetchAll: TCheckBox;
    ConnectDialog: TConnectDialog;
    edFetchRows: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    ToolBar1: TPanel;
    cbPR: TCheckBox;
    lbRP4: TLabel;
    lbRP3: TLabel;
    lbRP2: TLabel;
    lbRP1: TLabel;
    btGetRP: TButton;
    meSQL: TMemo;
    Splitter4: TSplitter;
    rbFour: TRadioButton;
    rbTwo: TRadioButton;
    rbOne: TRadioButton;
    OraSession2: TOraSession;
    OraSession3: TOraSession;
    OraSession4: TOraSession;
    cbMultiSession: TCheckBox;
    procedure btOpenClick(Sender: TObject);
    procedure btCloseClick(Sender: TObject);
    procedure cbFetchAllClick(Sender: TObject);
    procedure cbNonBlockingClick(Sender: TObject);
    procedure edFetchRowsExit(Sender: TObject);
    procedure btGetRPClick(Sender: TObject);
    procedure meSQLExit(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cbMultiSessionClick(Sender: TObject);
  private
    { Private declarations }
    procedure GetRP;
  public
    { Public declarations }
  end;

var
  fmMain: TfmMain;

implementation

{$R *.nfm}

procedure TfmMain.GetRP;
begin
  lbRP1.Caption:= IntToStr(OraQuery1.RowsProcessed);
  lbRP1.Update;
  lbRP2.Caption:= IntToStr(OraQuery2.RowsProcessed);
  lbRP2.Update;
  lbRP3.Caption:= IntToStr(OraQuery3.RowsProcessed);
  lbRP3.Update;
  lbRP4.Caption:= IntToStr(OraQuery4.RowsProcessed);
  lbRP4.Update;
end;

procedure TfmMain.btOpenClick(Sender: TObject);
const
  Delay = 30;
  MaxCnt = 70;
var
  Sum,OldSum:integer;
  Cnt:integer;
begin
  OraQuery1.Open;
  Update;
  if rbTwo.Checked or rbFour.Checked then begin
    if not OraSession2.Connected then
      OraSession2.Assign(OraSession1);
    OraQuery2.Open;
    Update;
    if rbFour.Checked then begin
      if not OraSession3.Connected then
        OraSession3.Assign(OraSession1);
      OraQuery3.Open;
      Update;
      if not OraSession4.Connected then
        OraSession4.Assign(OraSession1);
      OraQuery4.Open;
      Update;
    end;
  end;

  if cbNonBlocking.Checked and cbPR.Checked then begin
  // works for four datasets only
    while not (OraQuery1.Fetched and OraQuery2.Fetched and OraQuery3.Fetched and OraQuery4.Fetched) and
      OraQuery1.Active and OraQuery2.Active and OraQuery3.Active and OraQuery4.Active
    do begin
      GetRP;
      Application.ProcessMessages;
    end;
  end;
end;

procedure TfmMain.btCloseClick(Sender: TObject);
begin
  OraQuery1.Close;
  OraQuery2.Close;
  OraQuery3.Close;
  OraQuery4.Close;
  GetRP;
end;

procedure TfmMain.cbFetchAllClick(Sender: TObject);
begin
  OraQuery1.FetchAll:= cbFetchAll.Checked;
  OraQuery2.FetchAll:= cbFetchAll.Checked;
  OraQuery3.FetchAll:= cbFetchAll.Checked;
  OraQuery4.FetchAll:= cbFetchAll.Checked;
end;

procedure TfmMain.cbNonBlockingClick(Sender: TObject);
begin
  OraQuery1.NonBlocking:= cbNonBlocking.Checked;
  OraQuery2.NonBlocking:= cbNonBlocking.Checked;
  OraQuery3.NonBlocking:= cbNonBlocking.Checked;
  OraQuery4.NonBlocking:= cbNonBlocking.Checked;
end;

procedure TfmMain.edFetchRowsExit(Sender: TObject);
begin
  OraQuery1.FetchRows:= StrToInt(edFetchRows.Text);
  OraQuery2.FetchRows:= StrToInt(edFetchRows.Text);
  OraQuery3.FetchRows:= StrToInt(edFetchRows.Text);
  OraQuery4.FetchRows:= StrToInt(edFetchRows.Text);
end;

procedure TfmMain.btGetRPClick(Sender: TObject);
begin
  GetRP;
end;

procedure TfmMain.meSQLExit(Sender: TObject);
begin
  OraQuery1.SQL.Assign(meSQL.Lines);
  OraQuery2.SQL.Assign(meSQL.Lines);
  OraQuery3.SQL.Assign(meSQL.Lines);
  OraQuery4.SQL.Assign(meSQL.Lines);
end;

procedure TfmMain.FormShow(Sender: TObject);
begin
  meSQLExit(Self);
end;

procedure TfmMain.cbMultiSessionClick(Sender: TObject);
begin
  if cbMultiSession.Checked then begin
    OraSession2.Assign(OraSession1);
    OraSession3.Assign(OraSession1);
    OraSession4.Assign(OraSession1);
    OraQuery2.Session:= OraSession2;
    OraQuery3.Session:= OraSession3;
    OraQuery4.Session:= OraSession4;
  end
  else begin
    OraQuery2.Session:= OraSession1;
    OraQuery3.Session:= OraSession1;
    OraQuery4.Session:= OraSession1;
  end;
end;
{
SELECT * FROM All_Objects
  WHERE OWNER IN ('SYS','PUBLIC','SYSTEM','SCOTT')
}

end.

⌨️ 快捷键说明

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