Padre_Mortius писал(а):Dataset.RecordCount это количество записей в выборке, а не в фильтре...  
простите.. но разве Dataset.RecordCount это не количество записей в датасете? ведь если я его фильтрую, то и количество записей в нем изменяется, я же не смотрю сколько записей в квери - оно и есть 1 000, мне нужно кол-во записей в датасете...
для правильного отображения используйте выборки через язык запросов SQL
исключено, нужно фильтровать именно датасет, так как именно с ним и ведется работа локально - проставляются отметки в строках и тп. квери при этом трогать нельзя.
Добавлено спустя 46 минут 45 секунд:в общем задача решена, выкладываю свое решение.
пошел по проверенному пути - проверить работоспособность кода в Delphi дабы не расшибать лоб.
приведенный в первом сообщении код оказался полностью работоспособен и помятуя о разнице между делфи и лазарус, а так же молодости лазарус принял решение найти обходной путь и нашел
- Код: Выделить всё
 procedure TFmMain.Button1Click(Sender: TObject);
var
  cnt: Integer;
  bmk: TBookmark;
begin
  inherited;
  DbGrid1.DataSource.DataSet.DisableControls; // Это - датасет грида
  cnt := 0;
  bmk := DbGrid1.DataSource.DataSet.GetBookmark; // Запомнили позицию
  try // Считаем
    DbGrid1.DataSource.DataSet.First;
    while not FmMain.ListKvit.DataSource.DataSet.Eof do
    begin
      Inc(cnt);
      DbGrid1.DataSource.DataSet.Next;
    end;
    DbGrid1.DataSource.DataSet.GotoBookmark(bmk); // Вернулись
  finally
    DbGrid1.DataSource.DataSet.FreeBookmark(bmk);
    DbGrid1.DataSource.DataSet.EnableControls;
  end;
  ShowMessage('Всего записей = ' + IntToStr(cnt));
end;                  
приведенное решение нашел на просторах форума сайта 
http://www.sql.ru