0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 13

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

21.02.2016, 15:46. Показов 13236. Ответов 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
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 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
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
13.11.2017, 20:49
if Dataset.Eof then
0
6001 / 4576 / 1096
Регистрация: 29.08.2013
Сообщений: 28,264
Записей в блоге: 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 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
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
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 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
6001 / 4576 / 1096
Регистрация: 29.08.2013
Сообщений: 28,264
Записей в блоге: 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
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 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
6001 / 4576 / 1096
Регистрация: 29.08.2013
Сообщений: 28,264
Записей в блоге: 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
6001 / 4576 / 1096
Регистрация: 29.08.2013
Сообщений: 28,264
Записей в блоге: 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 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru