![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.11.2007
Сообщений: 56
|
![]()
Здравствуйте.
У меня следующая проблем. Обрабатываю КЛАДР (классификатор адресов http://www.gnivc.ru/document.asp?id=80 если кому интересно) имеется таблица адресов около 180'000 записей. в таблице строковое поле поле Name , содержащее название объекта классификатора. Работаю с таблицей через ADO (ADOConnection+ADOTable). таблицу запихнел в MSACCESS. проиндексировал поле Name. Теперь: на форме имеется Tedit , куда вводится навание (например города). и DBGrid , где отображаются названия городов, которые начинаются на TEdit.Text. Я делую следующим образом: и вводе символов в TEdit вызываю метод locate: procedure TForm1.Edit1Change(Sender: TObject); begin if length(trim(edit1.Text))>0 then begin ADOTable1.Locate('Name',trim(edit1. Text),[loCaseInsensitive, loPartialKey]); end; end; procedure TForm1.FormCreate(Sender: TObject); begin ADOTable1.IndexFieldNames:='Name'; end; Проблема в том что это работает очень долго, несмотря на то что поле проиндексировано. ![]() |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Ты бы луче делал это по другому событи. например по нажатию Энтера
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
![]()
TTable в топку используй Query
И работай запросами select Name from NameTable where Name like %Edit.Text% что то типа такого... приросто просзводительности ощутится... |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 26.11.2007
Сообщений: 56
|
![]() |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 26.11.2007
Сообщений: 56
|
![]()
Необходимо чтобы по мере ввода названия курсор позиционировался на более подходящей записи.
У меня Сore2 1.86/1024mb ... задержка при очередном нажатии на клавиатуру (срабатывании OnCange для Tedit) примерно секнда - много вато, долго слишком... ((( |
![]() |
![]() |
![]() |
#6 | ||
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 26.11.2007
Сообщений: 56
|
![]()
может быть locate работает без использования индекса??? тогда как его подключить??? кто нибудь знает???
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 26.11.2007
Сообщений: 56
|
![]()
делая
select Name from NameTable where Name like %Edit.Text% я сужу диапозон записей, а мне нужно позиционировать на подходящей записи и чтоб остальные записи были доступкны (при нажатии клавиш вверх и вниз) ((( |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
![]()
dxDBGrid и контекстный поиск...
вообще ничего делать не надо... только подключить DataSet к гриду и настроить некоторые свойства... |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 24.10.2007
Сообщений: 254
|
![]()
А что за база у тебя? Ты в базе таблицу проиндексировал?
|
![]() |
![]() |