![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте, направьте пожалуйста на путь истинный.
База данных FireBird есть таблица с ключевым полем. Нужно перенести курсор в dbgrid на строку с определенным id обычно выполняю это так: dtmdlMain.ibqryViewUsluga.Locate('USLUGA_ID',uslID ,[]); frmMain.dbgrdhMain.SetFocus; при таблице в среднем в 400 записей locate проводится до 3 секунд на слабой машине. (проблема в том что база быстро увеличивается, соответственно время так же). Есть ли альтернатива данному методу? delphi xe2 |
|
#2
|
||||
|
||||
|
Попробуйте Seek использовать.
|
|
#3
|
|||
|
|||
|
Seek для работы с бинарными файлами как я понял а не с бд
|
|
#4
|
|||
|
|||
|
Цитата:
попробуй отключать DB Aware компоненты на момент поиска - TIBQuery.DisableControls/TIBQuery.EnableControls. Хотя это сильно не должно влиять. Что-то странное, поиск в 400 записях - не самая сложная задача. 3 сек на нее - очень долго... |
|
#5
|
||||
|
||||
|
Как вариант -- перестать использовать TIBTable и написать, наконец, нормальную программу.
|
|
#6
|
|||
|
|||
|
Я не использую ibtable, для подключения к firebird base использую такие компоненты
TIBDatabase - TIBquery - TIBTransaction - TDateSource. TIBQuery.DisableControls/TIBQuery.EnableControls эффекта не дает, проблемма с медленным Locate имеет место быть, но так в интернете метода решения проблемы не нашел. Только лишь переход на FIBPlus компоненты, но переписывать всю программу сомнительный вариант. может еще кто знает как возможно в дбгриде перенести курсор на определенную запись не используя Locate? |