Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.04.2015, 18:02
Аватар для Bethryyyl
Bethryyyl Bethryyyl вне форума
Прохожий
 
Регистрация: 07.04.2015
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Количество строк

Есть форма:
Безымянный.png

Подсчитал количество строк в 1-ой таблице вот так:
Код:
DataModule1.AdoQuery1.Close;
DataModule1.AdoQuery1.SQL.Text := 'SELECT * FROM Дома';
DataModule1.AdoQuery1.Open;
Label2.Caption :=IntToStr( DataModule1.ADOQuery1.RecordCount);

Вторая таблица (Квартиры в доме) - это побочная таблица 1-ой. (Master Source). Данные в ней меняются в соответствии с выбранной ячейкой в 1-ой таблице. Как сделать подсчет строк во 2-ой таблице так, чтобы он менялся в соответствии с выбранной ячейкой в 1-ой таблице ?
Ответить с цитированием
  #2  
Старый 07.04.2015, 18:39
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

select count(1) колво from квартиры where дом=:дом
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 07.04.2015, 19:07
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А не надо вам ничего считать дополнительно. У вас эти данные уже есть, их тем же методом RecordCount можно получить напрямую из датасета для каждого из гридов.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 07.04.2015, 19:23
Аватар для Bethryyyl
Bethryyyl Bethryyyl вне форума
Прохожий
 
Регистрация: 07.04.2015
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
А не надо вам ничего считать дополнительно. У вас эти данные уже есть, их тем же методом RecordCount можно получить напрямую из датасета для каждого из гридов.

Можешь расписать как это сделать ?
Ответить с цитированием
  #5  
Старый 07.04.2015, 19:25
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

cxGrid вообще сам умеет все подсчитывать
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 07.04.2015, 19:30
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Примерно так:
Код:
DBGrid2.DataSource.DataSet.RecordCount
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 07.04.2015, 19:34
Аватар для Bethryyyl
Bethryyyl Bethryyyl вне форума
Прохожий
 
Регистрация: 07.04.2015
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Примерно так:
Код:
DBGrid2.DataSource.DataSet.RecordCount
Ну так это будет считывать количество всхе записей.
Ответить с цитированием
  #8  
Старый 07.04.2015, 19:38
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Верно, но вы ведь сами сказали, что:
Цитата:
Вторая таблица (Квартиры в доме) - это побочная таблица 1-ой. (Master Source). Данные в ней меняются в соответствии с выбранной ячейкой в 1-ой таблице. Как сделать подсчет строк во 2-ой таблице так, чтобы он менялся в соответствии с выбранной ячейкой в 1-ой таблице ?
Из этого я делаю вывод, что у вас есть связь Мастер(Дом) - Деталь(квартиры) а раз так, то деталь будет всегда возвращать количество квартир для выбранного дома, что и требуется
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 07.04.2015 в 19:40.
Ответить с цитированием
  #9  
Старый 07.04.2015, 19:39
Аватар для Bethryyyl
Bethryyyl Bethryyyl вне форума
Прохожий
 
Регистрация: 07.04.2015
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Верно, но вы ведь сами сказали, что:
Ну так надо чтобы количество строк в label'e тоже изменялось.

Код:
DBGrid2.DataSource.DataSet.RecordCount
Так просто считывается количество строк таблицы полностью.

Последний раз редактировалось Bethryyyl, 07.04.2015 в 19:44.
Ответить с цитированием
  #10  
Старый 07.04.2015, 19:43
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Вы такое хотите?
Код:
procedure TForm32.ClientDataSet1AfterScroll(DataSet: TDataSet);
begin
 Label1.Caption := IntToStr(DBGrid2.DataSource.DataSet.RecordCount);
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
Bethryyyl (07.04.2015)
  #11  
Старый 07.04.2015, 19:51
Аватар для Bethryyyl
Bethryyyl Bethryyyl вне форума
Прохожий
 
Регистрация: 07.04.2015
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Вы такое хотите?
Код:
procedure TForm32.ClientDataSet1AfterScroll(DataSet: TDataSet);
begin
 Label1.Caption := IntToStr(DBGrid2.DataSource.DataSet.RecordCount);
end;

Все работает, только выдает ошибку.
Безымянный.png
Ответить с цитированием
  #12  
Старый 07.04.2015, 20:11
Аватар для Bethryyyl
Bethryyyl Bethryyyl вне форума
Прохожий
 
Регистрация: 07.04.2015
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Через событие CellClick у DBGrid все работает.
Ответить с цитированием
  #13  
Старый 07.04.2015, 21:37
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Сообщение от Bethryyyl
Все работает, только выдает ошибку.
Вложение 4536
А вы в отладчике посмотрите, что у вас в DataSet при AV хранится
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #14  
Старый 12.04.2015, 12:58
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,564
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Bethryyyl
...
Случайно удалил твои прошлые темы при объединении.
На будущее: мелкие вопросы лучше обсуждать в одном топике, нежели создавать кучу ниочемных тем.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter