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

📄 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, Variants, OdacClx,
{$ELSE}
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, ExtCtrls, Grids, DBGrids, StdCtrls, ToolWin, ComCtrls, OdacVcl,
{$IFNDEF VER130}
  Variants,
{$ENDIF}
{$ENDIF}
  Db, OraLoader, OraScript, MemDS, DBAccess, Ora, OraSmart, Fetch;

type
  TfmMain = class(TForm)
    OraSession: TOraSession;
    DBGrid: TDBGrid;
    DataSource: TDataSource;
    ToolBar: TPanel;
    btOpen: TButton;
    DBNavigator: TDBNavigator;
    btClose: TButton;
    ConnectDialog: TConnectDialog;
    Query: TSmartQuery;
    btLoad: TButton;
    btCreate: TButton;
    btDrop: TButton;
    scCreate: TOraScript;
    scDrop: TOraScript;
    OraLoader: TOraLoader;
    btDeleteAll: TButton;
    edRows: TEdit;
    Label1: TLabel;
    rgEvent: TRadioGroup;
    rgMode: TRadioGroup;
    StatusBar: TStatusBar;
    cbUseNet: TCheckBox;
    cbDebug: TCheckBox;
    procedure btOpenClick(Sender: TObject);
    procedure btCloseClick(Sender: TObject);
    procedure btCreateClick(Sender: TObject);
    procedure btDropClick(Sender: TObject);
    procedure btLoadClick(Sender: TObject);
    procedure GetColumnData(Sender: TObject; Column: TDPColumn;
      Row: Integer; var Value: Variant; var EOF: Boolean);
    procedure btDeleteAllClick(Sender: TObject);
    procedure QueryAfterOpen(DataSet: TDataSet);
    procedure QueryBeforeClose(DataSet: TDataSet);
    procedure PutData(Sender: TOraLoader);
    procedure FormShow(Sender: TObject);
    procedure rgEventClick(Sender: TObject);
    procedure rgModeClick(Sender: TObject);
    procedure cbUseNetClick(Sender: TObject);
    procedure QueryBeforeFetch(DataSet: TCustomDADataSet;
      var Cancel: Boolean);
    procedure QueryAfterFetch(DataSet: TCustomDADataSet);
    procedure cbDebugClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmMain: TfmMain;

implementation
uses
  Debug;

{$R *.dfm}

procedure TfmMain.btOpenClick(Sender: TObject);
begin
  Query.Open;
end;

procedure TfmMain.btCloseClick(Sender: TObject);
begin
  Query.Close;
end;

procedure TfmMain.btCreateClick(Sender: TObject);
begin
  scCreate.Execute;
end;

procedure TfmMain.btDropClick(Sender: TObject);
begin
  scDrop.Execute;
end;

procedure TfmMain.btLoadClick(Sender: TObject);
var
  TickInfo: TTickInfo;
begin
  TickInfo := TTickInfo.Create;
  try
    TickInfo.Start;

    OraLoader.Load;  // loading rows

    StatusBar.Panels[1].Text := 'Time: ' + TickInfo.GetIntervalSt;

    if Query.Active then
      Query.Refresh;
  finally
    TickInfo.Free;
  end;
end;

procedure TfmMain.GetColumnData(Sender: TObject;
  Column: TDPColumn; Row: Integer; var Value: Variant; var EOF: Boolean);
begin
  case Column.Index of
    0: Value := Row;
    1: Value := Random(100);
    2: Value := Random*100;
    3: Value := 'abc01234567890123456789';
    4: Value := Date;
  else
    Value := Null;
  end;

  EOF := Row > StrToInt(edRows.Text);
end;

procedure TfmMain.PutData(Sender: TOraLoader);
var
  Count: integer;
  i: integer;
begin
  Count := StrToInt(edRows.Text);
  for i := 1 to Count do begin
    Sender.PutColumnData(0, i, i);
    Sender.PutColumnData('NUM', i, Random(100));
    //Sender.PutColumnData(1, i, Random(100));
    Sender.PutColumnData(2, i, Random*100);
    Sender.PutColumnData(3, i, 'abc01234567890123456789');
    Sender.PutColumnData(4, i, Date);
  end;
end;

procedure TfmMain.btDeleteAllClick(Sender: TObject);
begin
  OraSession.ExecSQL('TRUNCATE TABLE ODAC_Loaded', [Null]);
  OraSession.Commit;
  if Query.Active then
    Query.Refresh;
end;

procedure TfmMain.QueryAfterOpen(DataSet: TDataSet);
begin
  StatusBar.Panels[0].Text := 'RecordCount: ' + IntToStr(DataSet.RecordCount);
end;

procedure TfmMain.QueryBeforeClose(DataSet: TDataSet);
begin
  StatusBar.Panels[0].Text := '';
end;

procedure TfmMain.FormShow(Sender: TObject);
begin
  rgMode.ItemIndex := Integer(OraLoader.LoadMode);
  rgEvent.ItemIndex := 1;
  cbUseNet.Checked := OraSession.Options.Net;
  cbDebug.Checked := Query.Debug;
end;

procedure TfmMain.rgEventClick(Sender: TObject);
begin
  if rgEvent.ItemIndex = 0 then begin
    OraLoader.OnGetColumnData := GetColumnData;
    OraLoader.OnPutData := nil;
  end
  else begin
    OraLoader.OnGetColumnData := nil;
    OraLoader.OnPutData := PutData;
  end
end;

procedure TfmMain.rgModeClick(Sender: TObject);
begin
  OraLoader.LoadMode := TLoadMode(rgMode.ItemIndex);
end;

procedure TfmMain.cbUseNetClick(Sender: TObject);
begin
  OraSession.Options.Net := cbUseNet.Checked;
end;

procedure TfmMain.QueryBeforeFetch(DataSet: TCustomDADataSet;
  var Cancel: Boolean);
begin
  if DataSet.FetchingAll then begin
    FetchForm.Show;
    Application.ProcessMessages;
    Cancel := not FetchForm.Visible;

    if Cancel then
      StatusBar.Panels[0].Text := 'RecordCount: ' + IntToStr(DataSet.RecordCount);
  end;
end;

procedure TfmMain.QueryAfterFetch(DataSet: TCustomDADataSet);
begin
  if not DataSet.FetchingAll then begin
    FetchForm.Close;
    Application.ProcessMessages;

    StatusBar.Panels[0].Text := 'RecordCount: ' + IntToStr(DataSet.RecordCount);
  end;
end;

procedure TfmMain.cbDebugClick(Sender: TObject);
begin
  Query.Debug := cbDebug.Checked;
  scCreate.Debug := cbDebug.Checked;
  scDrop.Debug := cbDebug.Checked;
end;

end.

⌨️ 快捷键说明

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