Icon View Incident Report

Serious Serious
Reported By: Michael Vogel
Reported On: 7/6/2005
For: Version 4.21 Build 6
# 2092 Filters Not Respecting Existing Ranges When Executing

In a table we set a range to an indexed field for a preselection. Then we set a Filter to an unindexed field. Because of the preselection usually upto 80 Datasets need to be filtered. Because our table has more than 300.000 datasets this was a good strategy and worked fine till version 4.21. Now filtering takes more than one minute. It looks as all datasets are filtered now, not only the 80 datasets.

procedure TForm1.FormCreate(Sender: TObject);
begin
  ATable.Close;
  ATable.DatabaseName := ExtractFilePath(Application.ExeName);
  if (ATable.Exists) then
    ATable.Open;
end;

procedure TForm1.btnRangeClick(Sender: TObject);
begin
  ATable.SetRange([1], [1]);
end;

procedure TForm1.btnFilterClick(Sender: TObject);
var
  ATickCount: Integer;
begin

  Screen.Cursor := crHourGlass;

  try

    ATickCount      := GetTickCount;
    ATable.Filter   := 'Name = ''Smith''';
    ATable.Filtered := True;

    ShowMessage(IntToStr(GetTickCount - ATickCount) + ' ms');

  finally
    Screen.Cursor := crDefault;
  end;

end;



Resolution Resolution
Fixed Problem on 7/6/2005 in version 4.21 build 7


Products Affected Products Affected
DBISAM Additional Software and Utilities
DBISAM ODBC Client-Server
DBISAM ODBC Client-Server with Source
DBISAM ODBC Standard
DBISAM ODBC Standard with Source
DBISAM VCL Client-Server
DBISAM VCL Client-Server with Source
DBISAM VCL Standard
DBISAM VCL Standard with Source

Image