📄 flargedatasetclientmain.pas
字号:
unit fLargeDataSetClientMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBClient, MConnect, SConnect, StdCtrls, ExtCtrls, DBCtrls, Grids,
DBGrids;
type
TForm2 = class(TForm)
ClientDataSet1: TClientDataSet;
SocketConnection1: TSocketConnection;
DataSource1: TDataSource;
DBNavigator1: TDBNavigator;
Panel1: TPanel;
edtSearchField: TEdit;
edtRecNo: TEdit;
edtTime: TEdit;
DBGrid1: TDBGrid;
btnLocate: TButton;
btnImproved: TButton;
ClientDataSet2: TClientDataSet;
cdsTemp: TClientDataSet;
btnQuery: TButton;
btnGeneral: TButton;
ClientDataSet3: TClientDataSet;
procedure FormActivate(Sender: TObject);
procedure FormDeactivate(Sender: TObject);
procedure btnLocateClick(Sender: TObject);
procedure btnImprovedClick(Sender: TObject);
procedure btnQueryClick(Sender: TObject);
procedure btnGeneralClick(Sender: TObject);
private
{ Private declarations }
bFunc : Boolean;
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
procedure TForm2.FormActivate(Sender: TObject);
begin
SocketConnection1.Connected := True;
ClientDataSet1.Active := True;
bFunc := True;
edtRecNo.Text := IntToStr(ClientDataSet1.RecordCount);
end;
procedure TForm2.FormDeactivate(Sender: TObject);
begin
ClientDataSet1.Active := False;
SocketConnection1.Connected := False;
end;
procedure TForm2.btnLocateClick(Sender: TObject);
begin
bFunc := True;
end;
procedure TForm2.btnImprovedClick(Sender: TObject);
begin
bFunc := False;
end;
procedure TForm2.btnQueryClick(Sender: TObject);
var
lStart, lEnd : Integer;
lCurr, lOffset : Integer;
procedure CheckData;
var
iCount : Integer;
begin
cdsTemp.Data := ClientDataSet1.Data;
while not (ClientDataSet2.Eof) do
begin
if (cdsTemp.Locate('NAME', ClientDataSet2.FieldByName('NAME').Value, []) ) then
ClientDataSet2.Delete
else
ClientDataSet2.Next;
end;
ClientDataSet2.MergeChangeLog;
end;
begin
lStart := GetTickCount;
if (bFunc) then
begin
ClientDataSet1.Locate('NAME', edtSearchField.Text, [loPartialKey, loCaseInsensitive]);
edtRecNo.Text := IntToStr(ClientDataSet1.RecordCount);
end
else
begin
ClientDataSet2.Close;
ClientDataSet2.CommandText := 'select * from cust where NAME like ''' + edtSearchField.Text + '%''';
ClientDataSet2.Open;
lCurr := ClientDataSet1.RecNo;
lOffset := ClientDataSet1.RecordCount - lCurr + 1;
CheckData;
ClientDataSet1.AppendData(ClientDataSet2.Data, False);
ClientDataSet1.MoveBy(lOffset);
end;
lEnd := GetTickCount;
edtRecNo.Text := IntToStr(ClientDataSet1.RecordCount);
edtTime.Text := FloatToStr((lEnd - lStart) / 1000.0) + '
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -