Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/64: Рейтинг темы: голосов - 64, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 13

Количество строк в DBGrid

21.02.2016, 15:46. Показов 13120. Ответов 39
Метки нет (Все метки)

Помогите пожалуйста с кодом. Имеется форма на которой располагаются DBGrid к которой применяется фильтр из edit1. Нужно чтобы в Label 2 отображалось количество строк из DBGrid. Прописан следующий код, НО разультат показывает количество строк которые поместились в "видимую часть" таблицы (30 записей), если прокрутить вниз - есть и другие записи соответствующие фильтру.
Delphi
1
2
3
4
TDBGridX = class(TDBgrid);
// ...
ko:=TDBGridX(dbGrid1).RowCount-1;
Label2.Caption :='Отфильтровано: '+ inttostr(ko);
Вопрос.
Кол-во строк видимой части должно отображаться не при помощи ko:=TDBGridX(dbGrid1).VisibleRowCount-1 разве???
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2016, 15:46
Ответы с готовыми решениями:

Количество строк в DBgrid
Здравствуйте! у меня вопрос, как посчитать кол-во строк в DBgrid'e. НА форме находится DBgrid , 2-а DataTimePicker'a в которых...

Определить количество строк DbGrid-а
На форме есть два компонента DBGrid. В зависимости от выбранной строки в DBGrid1, в DBGrid2 выводятся определенные строки. (Master Source) ...

Количество строк в DbGrid после фильтраций
как можно вывести количество строк после фильтраций? не через запрос

39
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
13.11.2017, 20:36
Цитата Сообщение от krapotkin Посмотреть сообщение
разрываем связь с помощью DisableControls и потом восстанавливаем обратно EnableControls
вот за это спасибо. то есть получается, разорвав связь, поползав по датасету и восстановив связь, я получу текущую выделеную запись ту же, что и до этих манипуляций?

Добавлено через 1 минуту
Цитата Сообщение от krapotkin Посмотреть сообщение
то при переходе на следующую строку он просто проверяет, попала она в фильтр или нет
при помощи комбинации First, while not Eof, NExt я получу отфильтрованные строки?
0
 Аватар для krapotkin
6853 / 4679 / 1465
Регистрация: 14.04.2014
Сообщений: 20,679
Записей в блоге: 21
13.11.2017, 20:37
да
чтобы вернуться на место, используйте GetBookmark -- SetBookmark()

Добавлено через 25 секунд
Цитата Сообщение от DenNik Посмотреть сообщение
я получу отфильтрованные строки?
конечно
1
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
13.11.2017, 20:41
Цитата Сообщение от DenNik Посмотреть сообщение
мне нужно именно подсчитать количество строк в Гриде именно после фильтрации
неверно дал информацию. в текущей моей задаче мне нужно не подсчитать количество, а просто отследить, пустой ли Грид после фильтрации. я использовал свойство DataSet.RecNo, т.к. если в гриде нет ни одной записи, РекНо равен 0. это правильно, надеюсь?

Добавлено через 59 секунд
это как по типу ListBox.ItemIndex = -1
0
 Аватар для krapotkin
6853 / 4679 / 1465
Регистрация: 14.04.2014
Сообщений: 20,679
Записей в блоге: 21
13.11.2017, 20:49
if Dataset.Eof then
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,240
Записей в блоге: 3
13.11.2017, 20:52
Зачем тут грид? Почему не SQL?
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
13.11.2017, 23:19
Цитата Сообщение от qwertehok Посмотреть сообщение
Зачем тут грид?
затем, что задачи бывают разные. у меня грид, результаты фильтрации в гриде, нужен момент когда результатов фильтрации становится ноль.

Добавлено через 1 минуту
Цитата Сообщение от krapotkin Посмотреть сообщение
if Dataset.Eof then
да это ясно. мне думается, это одно и то же. нет записей = DataSet.Eof - RecNo никак не может быть больше 0
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
14.11.2017, 02:30
Цитата Сообщение от DenNik Посмотреть сообщение
мне думается, это одно и то же. нет записей = DataSet.Eof - RecNo
Не совсем, если я правильно понял это обсуждение.
Проверка на DataSet.Eof - это полная гарантия на пустоту возвращенного набора данных.
RecNo - никакой гарантии и никакого смысла, кроме отдельных (довольно редких) случаев, когда BDE угадало правильный ответ.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
14.11.2017, 10:04
northener, ну почему же. я заметил следующее: когда происходит изменение состояния набора данных в ДатаСете, RecNo равен номеру записи, на которой стоит курсор в таблице (как правило, это 1), если в таблице нет ни одной записи, RecNo равен 0, что логично, т.к. курсор в таблице не указывает ни на одну запись.

Цитата Сообщение от northener Посмотреть сообщение
BDE
у меня Firebird, подключение через FIB+

Добавлено через 2 минуты
Цитата Сообщение от northener Посмотреть сообщение
RecNo - никакой гарантии и никакого смысла
смысл, насколько я понял - это номер записи в выборке по порядку, начиная с 1
0
 Аватар для krapotkin
6853 / 4679 / 1465
Регистрация: 14.04.2014
Сообщений: 20,679
Записей в блоге: 21
14.11.2017, 10:52
Цитата Сообщение от DenNik Посмотреть сообщение
результаты фильтрации в гриде
опять )))
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
14.11.2017, 11:13
Цитата Сообщение от krapotkin Посмотреть сообщение
опять )))
что опять? ну а где они ОТОБРАЖАЮТСЯ? сам же писал
Цитата Сообщение от krapotkin Посмотреть сообщение
он ОТОБРАЖАЕТ записи из подключенного к нему ДАТАСЕТА
я описываю с точки зрения визуального восприятия - грид пустой, значит нет записей, удовлетворяющих условию фильтрации (сторона пользователя), значит нужно установить соответствующий флаг (сторона разработчика). а как это наличие/отсутствие записей будет определяться - это параллельный вопрос, касающийся только разработчика.

сколько уже можно повторять это "низя". я ж не в детском саду вроде ))

Добавлено через 5 минут
и вообще, какого хрена?
какого, спрашивается, я не могу определить наличие записей, ориентируясь на Грид, если предполагается, что он правильно отображает результаты? а если это может быть
Цитата Сообщение от northener Посмотреть сообщение
никакой гарантии
то как можно говорить о правильности работы приложения в целом?

Добавлено через 1 минуту
Цитата Сообщение от krapotkin Посмотреть сообщение
TDataset в делфи генерирует всякие события
эти события через TDataSource передаются всяким DB-aware компонентам и обратно
поэтому получается если сделать текущей запись в dataset, событие уйдет в грид и он перерисуется
это понятно. но вопрос: откуда грид знает, сколько строк ему рисовать?
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,240
Записей в блоге: 3
14.11.2017, 15:58
Цитата Сообщение от DenNik Посмотреть сообщение
откуда грид знает, сколько строк ему рисовать?
он не знает, он рисует ВСЕ что есть

Цитата Сообщение от DenNik Посмотреть сообщение
затем, что задачи бывают разные. у меня грид, результаты фильтрации в гриде, нужен момент когда результатов фильтрации становится ноль.
почему нельзя заменить на query? запросы в квери быстрее
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
14.11.2017, 16:02
Цитата Сообщение от qwertehok Посмотреть сообщение
он не знает, он рисует ВСЕ что есть
но ведь после фильтрации количество всего, что есть в датасете не меняется. это же не новая выборка. или я не прав?

Цитата Сообщение от qwertehok Посмотреть сообщение
почему нельзя заменить на query?
ну, я работаю с FIB, а фибовский квери почему-то нельзя привязать к ДатаСорсу, в отличие от фибовского ДатаСета. видимо, наследственность другая )
0
 Аватар для krapotkin
6853 / 4679 / 1465
Регистрация: 14.04.2014
Сообщений: 20,679
Записей в блоге: 21
14.11.2017, 16:15
в датасете может и не меняется, но нам об этом никак не узнать
потому что перебор записей даст нам только отфильтрованные
а других способов узнать, что есть в датасете, нет
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
14.11.2017, 19:55
Цитата Сообщение от krapotkin Посмотреть сообщение
перебор записей даст нам только отфильтрованные
это я понял. при каждом обращении к датасету происходит верификация записи на предмет соответствия фильтру

Цитата Сообщение от krapotkin Посмотреть сообщение
других способов узнать, что есть в датасете, нет
вот это плохо и нелогично. кто и когда это определил? это только в IB/FIB-компонентах так, или и в других тоже? ну там ADO,BDE, какие еще есть...

Добавлено через 2 минуты
Цитата Сообщение от qwertehok Посмотреть сообщение
почему нельзя заменить на query?
планирую в скорости познакомиться с FireDac. возможно, с ними будет удобнее
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,240
Записей в блоге: 3
14.11.2017, 20:00
Цитата Сообщение от DenNik Посмотреть сообщение
планирую в скорости познакомиться с FireDac. возможно, с ними будет удобнее
а давай прямо сейчас?
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
14.11.2017, 20:17
Цитата Сообщение от qwertehok Посмотреть сообщение
а давай прямо сейчас?
не, прямо сейчас пойду картоху чистить

Добавлено через 6 минут
а вообще, приложение начал писать на фибах, допишу уже, а следующее уже постараюсь на ФД
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,240
Записей в блоге: 3
14.11.2017, 20:24
Цитата Сообщение от DenNik Посмотреть сообщение
а вообще, приложение начал писать на фибах, допишу уже, а следующее уже постараюсь на ФД
пожалуйста, пожалуйста, пожалуйста
Firedac тебе поможет, переходи прямо сейчас. Чем быстрее, тем лучше

ЗЫ хочешь пришлю фотку почищенной картохи?
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
14.11.2017, 21:15

Не по теме:

qwertehok, могу тебе фотку своей картохи прислать ))



Добавлено через 36 секунд
Цитата Сообщение от qwertehok Посмотреть сообщение
Firedac тебе поможет, переходи прямо сейчас. Чем быстрее, тем лучше
что, правда что ль?
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
15.11.2017, 01:18
Цитата Сообщение от DenNik Посмотреть сообщение
и вообще, какого хрена?
какого, спрашивается, я не могу определить наличие записей, ориентируясь на Грид, если предполагается, что он правильно отображает результаты? а если это может быть
Цитата Сообщение от northener Посмотреть сообщение
никакой гарантии
то как можно говорить о правильности работы приложения в целом?
Я говорил только об отсутствии гарантии при проверке RecNo (RecordCount). Такие свойства были изначально добавлены в TDadaset как абстрактные, но далее разработчики конкретных наследников не всегда их реализовывали. А вот EOF реализовали все.

Добавлено через 13 минут
Цитата Сообщение от DenNik Посмотреть сообщение
но вопрос: откуда грид знает, сколько строк ему рисовать?
Ему это сообщает DataSource, у которого есть список FDataLinks.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
15.11.2017, 10:18
Цитата Сообщение от northener Посмотреть сообщение
DataSource, у которого есть список FDataLinks
значит, все-таки есть какой-то список. мне не суть важно, в дбгриде он или еще где-то, главное, он все-таки есть
Цитата Сообщение от northener Посмотреть сообщение
добавлены в TDadaset как абстрактные, но далее разработчики конкретных наследников не всегда их реализовывали
верю и не спорю. но если в конкретном компоненте это работает, почему бы не использовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2017, 10:18

из таблицы DBGrid нужно вывести в edit количество строк из столбца Статус со значением работает, вот код, но выдает ошибку
Здравствуйте, запрограммировала базу данных через библиотеку ADO, из таблицы DBGrid нужно вывести в edit количество строк из столбца...

Количество строк в DBGrid
Помогите пожалуйста посчитать количество строк в DBGrid. Можно ли это число вывести на Panel, если можно, то как?

Посчитать количество строк в dbgrid
Как посчитать количество строк в dbgrid Задача в следующем имеется колонка возраст в которой указаны возраста людей цифрами. Вопрос - как...

Как определить количество строк в DBGrid
Только взялся за этот компонент и туплю. (Загрузил данные из базы в DBGrid) 1. Подскажите как определить кол-во строк в DBGrid. 1....

Узнать количество строк в DBGrid и проанализировать логические поля
Хочу запилить такую фичу: для вывода статистики прохождения тестов мне надо взять из БД логич. поле "Прошёл тест?" и проверить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru