0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 40
|
|
1 | |
Как определить количество строк в DBGrid24.09.2013, 10:33. Показов 16620. Ответов 32
Метки нет (Все метки)
Только взялся за этот компонент и туплю. (Загрузил данные из базы в DBGrid)
1. Подскажите как определить кол-во строк в DBGrid. 1. Как обращать в ячейкам, если в StringGrid1. понятно все - Cells, но как в DBGrid не могу понять.! Если есть ссылочка на инфу как работать с данным компонентом, буду очень признателен.
0
|
24.09.2013, 10:33 | |
Ответы с готовыми решениями:
32
Определить количество строк DbGrid-а Количество строк в DBgrid Количество строк в DBGrid Количество строк в DBGrid |
Супер-модератор
|
|
24.09.2013, 11:13 | 2 |
Зачем? DBGrid не хранит данные, он их только отображает. Считать строки (вернее, количество записей) надо в том наборе данных, с которым грид связан.
Еще раз: работать надо с набором данных, содержимое которого отображает DBGrid... Изменятся данные там - изменятся и в гриде.
0
|
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
|
||||||
24.09.2013, 11:19 | 3 | |||||
Z-7000, DBGrid данные не хранит, а только отображает то, что находится в таблице. Вы работаете с данными находящимися в таблице (даже если у вас нет DBGrid'a).
Не по теме: опоздал
2
|
669 / 559 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
|
||||||
24.09.2013, 11:33 | 4 | |||||
выдает кол-во записей в видимой части DBGrid1, а не все.
0
|
35 / 35 / 4
Регистрация: 28.05.2013
Сообщений: 180
|
|
24.09.2013, 11:36 | 5 |
Z-7000, Очень многое подчеркнёте прочитав книгу Фаронов В.В. - Программирование баз данных в Delphi 7. Там всё детально описывается, как к чему обращаться и как работать с наборами данных с помощью визуальных компонентов.
0
|
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 40
|
|
24.09.2013, 11:43 [ТС] | 6 |
Спасибо большое всем) начало положено.! Теперь все сказанное переварить, а то привык к StringGrid.!
Добавлено через 4 минуты Это конечно правильно.! База у меня простая на Access. И как мне это делать с источником данных?. Так как уже мне ответили Знатоки, пойдет?
0
|
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
|
|
24.09.2013, 11:46 | 7 |
Для курсоров Static и Keyset мы можем обратиться к свойству RecordCount и получить точное количество записей в наборе, т.к. статический курсор и курсор типа Keyset читают все данные набора в момент открытия.
0
|
669 / 559 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
|
|
24.09.2013, 12:24 | 8 |
0
|
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
|
|
15.04.2014, 10:05 | 9 |
Ребята, в своем проекте при работе с DBGrid столкнулся с неприятным багом, который мне надо позарез исправить и похоже без вашей помощи у меня не получится! Чтобы не выкладывать весь проект целиком, я составил небольшой пример, в нем вся суть.
Имеем: Главное и дочернее MDI окно. Нажмите кнопку «Окно 1», чтобы вызвать дочернее. На нем две DBGrid, курсор расположен в первой DBGrid. Баг состоит в следующем: Если поставить курсор на Edit1 (или щёлкнуть по кнопке «Найти»), а потом тыкнуть на первую DBGrid, она будет словно заблокирована, т.е. курсор обратно уже не поставишь , чтобы ее "разблокировать" надо щелкнуть по Edit2 или второй DBGrid, а уже потом по первой, что в моем реальном проекте крайне неудобно. Аналогично со второй DBGrid. Если на нее поставить курсор, а потом щелкнуть по Edit2, то обратно вернуть курсор на вторую DBGrid уже будет невозможно , надо будет сперва тыкать по Edit1 или по первой DBGrid, а уже по второй. С чем связан этот баг и как его можно исправить???
0
|
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
|
|
15.04.2014, 12:10 | 10 |
со 2-м проблем нет. Это не баг. Просто на момент клика по dbgrid1 у Вас активен контрол на другой форме.
В чем смысл такой реализации поиска?
0
|
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
|
|
15.04.2014, 12:51 | 11 |
droider,
Если список, в котором мы ищем уже открыт, но перекрыт другими окнами, то при нажатии кнопки «Найти» выдвигаем окно со списком вперед и показываем результат. Весь этот алгоритм в реальной программе уже работает, но глюк с DBGrid портит всю малину Добавлено через 4 минуты Добавлено через 7 минут И почему когда тыкаешь на другую DBGrid или Edit2 все нормально?
0
|
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
|
|
19.04.2014, 08:40 | 12 |
Перекомпилировал пример в Delphi XE (2010), баг пропал. В коде ничего не менял, просто перекомпилировал в другом Делфи. Кто-нибудь может объяснить причину этого явления. Може быть это мне поможет исправить баг в Delphi 2006.
PS: Ради интереса перекомпилировал пример и в Delphi 2009, там баг все еще присутствует.
0
|
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
|
|
19.04.2014, 12:00 | 13 |
Shman, вряд ли дело в версии. Я на Xe3 компилировал
0
|
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
|
|
19.04.2014, 21:42 | 14 |
droider, тогда как можно исправить такой нюанс? где он кроется?
0
|
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
|
||||||
27.04.2014, 12:39 | 15 | |||||
Ребята, с последнего обращения в эту тему я в свой основной проект добавил много разных возможностей, в том числе заблокировал ввод ненужных символов в поля для поиска, затем я отрыл проект и откомпилировал в Delphi XE, чтобы избавиться от глюка с курсором, о котором писал выше. Глюк с курсором пропал, но появился новый серьезный баг: в поле ввода невозможно ввести русские буквы, хотя их ввод я не запрещал. Код:
В исходниках вы можете обнаружить закоментируемую строку “if not CharInSet (Key, ['A'..'z', 'А'..'я', #8, #13, #127])”. Она нужна чтобы в Delphi XE не выводилось предупреждение “WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit”. Если ее раскоментировать, а закоментировать “if not (Key in ['A'..'z', 'А'..'я', #8, #13, #127])”, то такое предупреждение выводится не будет, но русские буквы ввести по прежнему не выйдет. Очень прошу понять причину такого поведение и прошу объяснить как следует изменить процедуру, чтобы РАЗРЕШИТЬ ввод русских букв после компиляции в Delphi XE! Ппосле компиляции в Delphi 2006 все работает, а после XE нет. Я сегодня свой exe’шник хотел отдать на тестирование, но такой баг мешает это сделать.
0
|
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
|
||||||
27.04.2014, 13:54 | 16 | |||||
по коду как раз наоборот.
Напишите так
0
|
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
|
|
27.04.2014, 14:07 | 17 |
droider,
Вы не правы. Тогда НЕ блокируются все символы, кроме ['a'..'z','A'..'Z', '0'..'9'] !
0
|
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
|
||||||
27.04.2014, 14:43 | 18 | |||||
Shman, так напишите
1
|
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
|
|
27.04.2014, 15:09 | 19 |
droider, Благодарю вас! Кстати, вам не трудно пояснить что означают цифры 1040 и 1103? Почему Ord(Key) я так понимаю возвращает порядковый номер (индекс) выражения перечислимого (кроме Int64) или символьного типа, переданного в параметре Key. А зачем его надо сравнивать цифрами 1040 и 1103 ?
0
|
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
|
|
27.04.2014, 15:29 | 20 |
символы юникода в диапазоне 1040-1103 для кириллицы[а-я, А-Я], т.е. обозначают русские буквы.
Функция Ord() - возвращает код нажатой клавиши (Key). Если возвращаемое значение кода клавиши входит в указанный диапазон, то он - символ кириллицы. П.С. В Delph7 Ваш код отработал бы нормально, но это уже устаревший вариант.
0
|
27.04.2014, 15:29 | |
27.04.2014, 15:29 | |
Помогаю со студенческими работами здесь
20
Посчитать количество строк в dbgrid Количество строк в DbGrid после фильтраций Как определить количество строк в таблице? Как определить количество строк? (Excel) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |