Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 20.08.2007
Сообщений: 64

Как ускорить перемещение курсора в DBGrid ?

09.06.2009, 20:31. Показов 3487. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если перемещать курсор в DBGrid на последнюю запись с помощью:

Code
1
TIBQuery::Locate("id",last_id,o);
то программа тормозит от одной секунды и больше (в зависимости от количество записей в таблице)

Как мне ускорить перемещение курсора на последнюю запись?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2009, 20:31
Ответы с готовыми решениями:

DBGrid перемещение курсора
в DBGrid находится информация на основании SQL запроса, сортировка по фамилии а как сделать так: если пользователь, находясь на поле...

Как ускорить выгрузку в Excel из DBGrid с созданием рамок для ячеек?
Всем доброго времени суток! Делаю выгрузку в Exel из своих DBGrid'ов там же создаю рамку для каждой ячейки void __fastcall...

Как включить перемещение курсора через тачпад?
Ноутбук HP 655 Notebook PC. Тачпад ведёт себя странно: кнопки работают, пробуждение из сна при прикосновение к тачпаду происходит, а мышка...

14
1 / 1 / 0
Регистрация: 07.05.2009
Сообщений: 11
09.06.2009, 22:51
ну тут не знаю как, а так советую попробовать через ADOQuery, всё быстро и без задржек
0
0 / 0 / 0
Регистрация: 20.08.2007
Сообщений: 64
09.06.2009, 22:53  [ТС]
Думаете TADOQuery::Locate работает быстрее, чем TIBQuery::Locate?
Почему же?
0
1 / 1 / 0
Регистрация: 07.05.2009
Сообщений: 11
09.06.2009, 22:57
по скорости не сравнивал)))), но у меня в базе фиг знает сколько записей, и скачет он по ней как ферари)))
0
0 / 0 / 0
Регистрация: 20.08.2007
Сообщений: 64
09.06.2009, 23:43  [ТС]
А посмотри сколько у тебя записей.

Да и еще смотря куда курсор скачет - если вначале таблицы, то это быстро, а если в конец, то тут тормоза (по моим наблюдениям)...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.06.2009, 01:01
locate будет работать быстро при индексировании таблицы. в противном случае ничего быстрее запроса нет... проверено на практике, отказался вообще от locate и table, перенес самые тяжелые операции в хранимые процедуры и все начало летать, индексы тоже созданы
0
0 / 0 / 0
Регистрация: 20.08.2007
Сообщений: 64
10.06.2009, 14:29  [ТС]
Locate и при индексировании тормозит - проверял... по моим тестам индиксирование никак не влияет на Locate .
А то что SQL-запросы выполняются очень быстро - это факт, тоже проверял. И с индиксированием они еще быстрее выполняются.

Но мне же надо как-то курсор в DBGrid перемещать... А как его быстро перемещать? Locate ведь тормозит...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.06.2009, 14:41
а при больших объемах базы ты ну никак не ускоришь, и достичь одинаковой скорости на 100 и 10000 записей не получится... вообще с позиционированием постоянно головняки, ничего не поделаешь... хотя если найдешь все-таки решение, отпишись, сам страдаю от локэйтов...
0
0 / 0 / 0
Регистрация: 20.08.2007
Сообщений: 64
10.06.2009, 22:31  [ТС]
Цитата Сообщение от VoodooMan Посмотреть сообщение
хотя если найдешь все-таки решение, отпишись, сам страдаю от локэйтов...
А решение есть - делать "правильные" SQL-запросы, чтобы в DBGrid выводилось ограниченное количество записей (не более тысячи)...

Но мне просто хотелось бы и при большом количестве записей в DBGrid быстро перемещать курсор.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
11.06.2009, 08:55
alex-v, к сожалению, в некоторых случаях просто невозможно ограничить кол-во записей, я вообще для ускорения работы ограничиваю кол-во записей, которые видны 500-ами (FetchRows), типа буфферизация отображения, есть тормоза небольшие при закачке новой порции данных, но внутри отдельного сегмента все работает быстрее... всегда приходится чем-то жертвовать...
0
 Аватар для Splitter
203 / 145 / 16
Регистрация: 13.01.2009
Сообщений: 554
11.06.2009, 11:08
а не пробовали такой вариант
C++
1
DataSource1->DataSet->Last();
для DataSource1, который используете для вывода в DBGrid
0
0 / 0 / 0
Регистрация: 20.08.2007
Сообщений: 64
11.06.2009, 14:13  [ТС]
Цитата Сообщение от Splitter Посмотреть сообщение
а не пробовали такой вариант
C++
1
DataSource1->DataSet->Last();
для DataSource1, который используете для вывода в DBGrid
Это тоже самое, что и TIBQuery::Last();
Потому что в DataSource1->DataSet находится указатель на TIBQuery.

VoodooMan, мне еще посоветовали использовать компоненты FIB+. Говорят они быстрее работают, чем стандартные...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
11.06.2009, 14:27
так я стандартные уже давно не использую: DAC и только их...
0
0 / 0 / 0
Регистрация: 20.08.2007
Сообщений: 64
11.06.2009, 19:09  [ТС]
А что такое DAC ? (я что-то не слыхал...)
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
11.06.2009, 20:16
data access component, не помню, как контора называется, но у них компоненты заточены под конкретную базу (oracle, interbase, mysql, ms sql server)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2009, 20:16
Помогаю со студенческими работами здесь

Возможно ли построчное перемещение курсора в текстовом файле? Если да, то как?
Может есть определённые команды?

Как сделать быстрое плавное перемещение курсора влево, вправо?
GetCursorPos(p); SetCursorPos(p.X+10,p.Y); Sleep(10); GetCursorPos(p); SetCursorPos(p.X-10,p.Y); Пробовал...

Почему OnMouseMove плохо реагирует на перемещение курсора. Как можно реализовать постоянный опрос getCursorPos
OnMouseMove формы плохо реагирует на перемещение курсора. Поэтому хотелось бы узнать как как можно реализовать постоянный опрос...

Перемещение курсора
Подскажите как передвинуть курсор в любую точку экрана по координатам x и y. Или каким нибуд другим способом?

Перемещение курсора
Мне нужно сделать что-то типа интерфейса на консоли.Как задавать координаты курсора на консоли в С++?(в Паскале аналог gotoxy()). ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru