Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DELPHI 7:Как вывести в label текущее число записей таблицы DBGrid [D7]


Koudelka ©   (2013-11-22 21:45:00) 

Всем привет. Ребятки, не получается вывести в label ( а конкретно в label2.text) сколько в данный момент отображено записей в таблице. Волнует кол-во записей, которое получается ПОСЛЕ различных фильтраций таблицы, это число должно обновляться после применения фильтрации или после удаления записи, т.е. тогда, когда кол-во записей таблицы уменьшается или увеличивается, поэтому код, который представлен ниже не подошел ( т.к. он всегда показывает одно и тоже число записей в Table,  а не число текущего кол-ва записей):

label2.Caption:='Отображено записей: ' + IntToStr(datamodule2.table1.RecordCount );

пробовала и 2 вариант:

datamodule2.Query1.Active:= false;
datamodule2.Query1.SQL.Clear;
datamodule2.Query1.SQL.Add('SELECT COUNT (*) AS ''COUNT'' FROM [ABONENT]');
datamodule2.Query1.Active:= TRUE;
label2.caption := IntToStr(datamodule2.Query1.RecordCount);

- тут вылетает ошибка Invalid use of keyword. Token: FROM.

Преподаватель предложил создать цикл и в нем посчитать сумму отобразившихся полей таблицы, которая открыта, как лучше это сделать? Или все-таки доработать эти варианты?


Ega23   (2013-11-25 10:35:00) [1]


> сколько в данный момент отображено записей в таблице

Записей в НД 100, а вот в гриде отображено в данный момент только 20 например.
Через DataLink можно достучаться, там было что-то типа displaycount


Koudelka   (2013-11-22 23:17:00) [2]

------------------Ответ найден! всем спасибо! ------------------

procedure TDataModule2.DataSource1DataChange(Sender: TObject;
 Field: TField);
begin
if DataSource1.DataSet.RecNo<>-1 then Form1.Label2.Caption:=Format('Записей: %d',[DataSource1.DataSet.RecordCount]);
end;


Koudelka   (2013-11-22 22:58:00) [3]

label2.Caption:='Отображено записей: ' + IntToStr(DBGrid.DataSource.DataSet.RecordCount );

- не поменял ситуацию, значение label'a как и в моем примере, меняется только с переходом из одной таблицы в другую, а после фильтрации ,  к сожалению, остается прежним, хотя кол-во видимых полей меняется.


Koudelka   (2013-11-22 22:58:00) [4]

label2.Caption:='Отображено записей: ' + IntToStr(DBGrid.DataSource.DataSet.RecordCount );

- не поменял ситуацию, значение label'a как и в моем примере, меняется только с переходом из одной таблицы в другую, а после фильтрации ,  к сожалению, остается прежним, хотя кол-во видимых полей меняется.


[ВладОшин]   (2013-11-22 22:32:00) [5]

сдается, что не там смотрите, не того источника данных
попробуйте посмотреть у того, который прикреплен к гриду
label2.Caption:='Отображено записей: ' + IntToStr(DBGrid.DataSource.DataSet.RecordCount );


> база не указана и возможны варианты.

это да..
там вообще может быть -1 :)
в некотрых случаях.


Jeer   (2013-11-22 22:07:00) [6]

А таблицы или запрос надо переоткрывать после модификации числа записей в таблице, чудеса редко случаются.


Jeer   (2013-11-22 22:05:00) [7]

Ну ты попробуй просто
*.SQL.Text := 'SELECT * FROM MyTable';

и затем *.RecordCount

Хотя база не указана и возможны варианты.


Наверх

Титульная страница Поиск, карта сайта Написать письмо