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