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