【delphi开源代码栏目提醒】:网学会员在delphi开源代码频道为大家收集整理了fLargeDatasMain.pas提供大家参考,希望对大家有所帮助!
unit fLargeDatasMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, DB, Grids, DBGrids, StdCtrls, ComCtrls,
Buttons, DBClient;
type
TfrmPerfMain = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Label1: TLabel;
edtTestCount: TEdit;
btnSP: TButton;
btnspIndex: TButton;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
btndbExpress: TButton;
mmStatus: TMemo;
pgLoops: TProgressBar;
btnDeleteData: TButton;
dsData: TDataSource;
DBNavigator2: TDBNavigator;
DBGrid2: TDBGrid;
btnAddIndex: TButton;
mmSorts: TMemo;
edtSortFields: TEdit;
Panel1: TPanel;
rbAscending: TRadioButton;
rbDescending: TRadioButton;
ledtRecordCount: TLabeledEdit;
Button1: TButton;
TabSheet3: TTabSheet;
DBNavigator3: TDBNavigator;
DBGrid3: TDBGrid;
ledtAdjustedPercent: TLabeledEdit;
bbtnAdjust: TBitBtn;
TabSheet4: TTabSheet;
DBNavigator4: TDBNavigator;
DBGrid4: TDBGrid;
ledtFilterCount: TLabeledEdit;
Button2: TButton;
ledtLowerSalary: TLabeledEdit;
ledtUpperSalary: TLabeledEdit;
ledtNFilterCount: TLabeledEdit;
mmFilter: TMemo;
Button3: TButton;
Button4: TButton;
ledtTotalAdjustedSalary: TLabeledEdit;
procedure btndbExpressClick(Sender: TObject);
procedure btnSPClick(Sender: TObject);
procedure btnDeleteDataClick(Sender: TObject);
procedure btnspIndexClick(Sender: TObject);
procedure btnAddIndexClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure bbtnAdjustClick(Sender: TObject);
private
{ Private declarations }
lStart : Longint;
lEnd : Longint;
ILOOPS : Integer;
igRecords : Integer;
function GetID: Integer;
function GetName: String;
function GetPhone: String;
function GetAddress: String;
function GetSalary: Double;
function AddIndexForSCDS(const sIndex : String; bAcsending : Boolean) : String;
public
{ Public declarations }
procedure LogStartTime;
procedure LogEndTime;
procedure LogRunTime(amm : TMemo; const sMsg : String);
procedure LogMsg(amm : TMemo; const sMsg : String);
end;
var
frmPerfMain: TfrmPerfMain;
implementation
uses udmLargeDatas, DBXpress;
{$R *.dfm}
const
DELETEINDEX = 'drop index IDXLARGEDATASNAME';
DELETEPRIMARYINDEX = 'ALTER TABLE LARGEDATAS DROP CONSTRAINT PIDXLARGEDATASID';
ADDPRIMARYINDEX = 'alter table LARGEDATAS ADD CONSTRAINT PIDXLARGEDATASID PRIMARY KEY (ID)';
ADDINDEX = 'create index IDXLARGEDATASNAME on LARGEDATAS (NAME)';
INDEXID = 'aidx';
function TfrmPerfMain.GetID: Integer;
begin
Inc(igRecords);
Result := igRecords;
end;
function TfrmPerfMain.GetName: String;
var
iIndex: Integer;
begin
Result := '';
for iIndex := 1 to 10 do // Iterate
begin
Result := Result + chr(Ord('a') + random(26));
end; // for
end;
function TfrmPerfMain.GetPhone: String;
var
iIndex: Integer;
begin
Result := '';
for iIndex := 1 to 13 do // Iterate
begin
Result := Result + chr(Ord('0') + random(9));
end; // for
end;
function TfrmPerfMain.GetAddress: String;
var
iIndex: Integer;
begin
Result := '';
for iIndex := 1 to 60 do // Iterate
begin
Result := Result + chr(Ord('a') + random(26));
end; // for
end;
function TfrmPerfMain.GetSalary: Double;
begin
Result := random(9999999) / 100.0
end;
procedure TfrmPerfMain.LogEndTime;
begin
lEnd := GetTickCount;
end;
procedure TfrmPerfMain.LogMsg(amm : TMemo; const sMsg: String);
begin
amm.Lines.Add(sMsg);
end;
procedure TfrmPerfMain.LogRunTime(amm : TMemo; const sMsg : String);
var
sTime : String;
begin
sTime := FloatToStr((lEnd - lStart) / 1000.0) + '秒';
LogMsg(amm, sMsg+sTime);
end;
procedure TfrmPerfMain.LogStartTime;
begin
lStart := GetTickCount;
end;
procedure TfrmPerfMain.btndbExpressClick(Sender: TObject);
var
iCount: Integer;
begin
ILOOPS := StrToInt(edtTestCount.Text);
dmDBExpress.cdsTest.DisableControls;
pgLoops.Position := 0;
pgLoops.Max := ILOOPS;
try
LogStartTime;
for iCount := 1 to ILOOPS do // Iterate
begin
dmDBExpress.cdsTest.Insert;
dmDBExpress.cdsTest.FieldByName('ID').Value := GetID;
dmDBExpress.cdsTest.FieldByName('NAME').Value := GetName;
dmDBExpress.cdsTest.FieldByName('PHONE').Value := GetPhone;
dmDBExpress.cdsTest.FieldByName('ADDRESS').Value := GetAddress;
dmDBExpress.cdsTest.FieldByName('SALARY').Value