Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2013, 21:33   #1
koudelka
Пользователь
 
Аватар для koudelka
 
Регистрация: 22.11.2013
Сообщений: 17
Вопрос Вывести в label текущее число записей таблицы (DBGrid) <Ответ найден!>

Всем привет. Ребятки, не получается вывести в 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);
- во 2ом варианте вылетает ошибка Invalid use of keyword. Token: FROM.

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

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

Последний раз редактировалось koudelka; 22.11.2013 в 23:25.
koudelka вне форума Ответить с цитированием
Старый 22.11.2013, 21:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Token: FROM.
Правильно вылезает AS ''COUNT'' убери совсем.
Кстати этот запрос не решает твою задачу учитывая требование:
Цитата:
число должно обновляться после применения фильтрации
Это запрос покажет кол-во всех записей.
Обьясни зачем тебе это нужно и скорее всего другой выход будет найден.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.11.2013, 22:02   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А так
Код:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  if DataSource1.DataSet.RecNo<>-1 then Label1.Caption:=Format('Записей: %d',[DataSource1.DataSet.RecordCount]);
end;
Цитата:
Преподаватель предложил создать цикл и в нем посчитать сумму отобразившихся полей таблицы
У-у-у. Совсем плохой. И так после каждой операции обновления или переустановки фильтра?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.11.2013, 22:25   #4
koudelka
Пользователь
 
Аватар для koudelka
 
Регистрация: 22.11.2013
Сообщений: 17
По умолчанию

Необходимо, чтобы значение этого label менялось по мере того, какие фильтры я применяю, если перед применением фильтра число 22 ( 22 записи мы видим) , то после применения у нас остается всего 3 записи, к примеру, значит и в label 'е тоже должна быть цифра 3.
По поводу обновления - я думаю, если код будет правильным, то проканает вариант с label2.update;

Последний раз редактировалось koudelka; 22.11.2013 в 22:32.
koudelka вне форума Ответить с цитированием
Старый 22.11.2013, 22:28   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
проканает вариант с label2.update
Ну ка подробней, что это даст?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.11.2013, 22:30   #6
koudelka
Пользователь
 
Аватар для koudelka
 
Регистрация: 22.11.2013
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
AS ''COUNT'' убери совсем.
Убрала вот так оставила:

datamodule2.Query1.SQL.Add('SELECT COUNT (*) FROM [ABONENT]');

Но вылезла та же ошибка только теперь с Token: FROM[ABONENT] ,ставила и [TableName] вместо [ABONENT], все-равно ругается, именно на значение в скобках

Последний раз редактировалось koudelka; 22.11.2013 в 22:35.
koudelka вне форума Ответить с цитированием
Старый 22.11.2013, 22:31   #7
koudelka
Пользователь
 
Аватар для koudelka
 
Регистрация: 22.11.2013
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну ка подробней, что это даст?
label обновит свое значение, если оно изменилось ,или я ошибаюсь?
koudelka вне форума Ответить с цитированием
Старый 22.11.2013, 22:33   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ошибаетесь. Попробуйте все таки, что в посте #3 предложено. Повесте на событие DataSource.OnDataChange
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.11.2013, 22:43   #9
koudelka
Пользователь
 
Аватар для koudelka
 
Регистрация: 22.11.2013
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ошибаетесь. Попробуйте все таки, что в посте #3 предложено. Повесте на событие DataSource.OnDataChange
Я Вам соврала! работает!! именно с первой таблицей , а я по-ошибке другую тестировала. Спасибо огромное!! Вы просто чудо! =*

Последний раз редактировалось koudelka; 22.11.2013 в 23:06.
koudelka вне форума Ответить с цитированием
Старый 22.11.2013, 23:03   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что-то не то делаете. У меня работает. Специально проверил на ClientDataSet
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести значение отдельного поля таблицы в DBText при выборе записи в DBGrid? Kalach БД в Delphi 18 07.02.2013 07:02
Вывести число(количество руды) в label с web странице Terti Работа с сетью в Delphi 0 07.10.2011 12:03
Как вывести в Label Значение из таблицы Lesa1988 Помощь студентам 1 25.11.2010 11:28
Вывести число, предшествующее первому отрицательному и число, следующее за последним отрицательным Rid Паскаль, Turbo Pascal, PascalABC.NET 4 22.12.2008 16:50
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56