|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.11.2007, 14:20 | #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; Проблема в том что это работает очень долго, несмотря на то что поле проиндексировано. Кто нибудь знает как можно ускорить поиск??? |
26.11.2007, 14:31 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ты бы луче делал это по другому событи. например по нажатию Энтера
I'm learning to live...
|
26.11.2007, 14:56 | #3 |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
TTable в топку используй Query
И работай запросами select Name from NameTable where Name like %Edit.Text% что то типа такого... приросто просзводительности ощутится... |
26.11.2007, 15:47 | #4 |
Пользователь
Регистрация: 26.11.2007
Сообщений: 56
|
|
26.11.2007, 15:52 | #5 |
Пользователь
Регистрация: 26.11.2007
Сообщений: 56
|
Необходимо чтобы по мере ввода названия курсор позиционировался на более подходящей записи.
У меня Сore2 1.86/1024mb ... задержка при очередном нажатии на клавиатуру (срабатывании OnCange для Tedit) примерно секнда - много вато, долго слишком... ((( |
26.11.2007, 15:59 | #6 | ||
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
Цитата:
Цитата:
|
||
26.11.2007, 16:00 | #7 |
Пользователь
Регистрация: 26.11.2007
Сообщений: 56
|
может быть locate работает без использования индекса??? тогда как его подключить??? кто нибудь знает???
|
26.11.2007, 16:07 | #8 |
Пользователь
Регистрация: 26.11.2007
Сообщений: 56
|
делая
select Name from NameTable where Name like %Edit.Text% я сужу диапозон записей, а мне нужно позиционировать на подходящей записи и чтоб остальные записи были доступкны (при нажатии клавиш вверх и вниз) ((( |
26.11.2007, 17:06 | #9 |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
dxDBGrid и контекстный поиск...
вообще ничего делать не надо... только подключить DataSet к гриду и настроить некоторые свойства... |
26.11.2007, 18:17 | #10 |
Форумчанин
Регистрация: 24.10.2007
Сообщений: 254
|
А что за база у тебя? Ты в базе таблицу проиндексировал?
|