Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADO [D6, Access]


HDD ©   (2002-05-19 11:48:00) 

Народ делаю телефонный справочник
Есть база данных Access + ADO в ней 56300 записей
Задаю поиск с из Edit с помощью with ADOTable1 do
Locate("ФИО",mxFlatEdit1.Text, [loPartialKey]);
Так вот на 233 пентиуме при вводе первой буквы затуп идет секунд 10-15 может больше и при вводе остальных затупливает секунд на 5 после каждой. Помогите можно ли всё это сделать по быстрее или в какую базу данных на крайняк всё это переделать?
Заранее благодарен Кирилл


John Kayfolom   (2002-05-24 13:34:00) [1]

Не заморачивайся с базами, используй мощь TADODataSet.
Я сделал так:
ADOConnection.Connected:=True;
ADODataSetAbonent.LoadFromFile( ExtractFileDirApplication.ExeName)+"\phonebook.adtg");
ADODataSetAbonent.Active:=True;
Где phonebook.adtg файло где лежат все телефоны (сделать его просто - в дизайнмоде делаешь ADODataSetAbonent.Active:=True и правой кнопкой SaveToFile)
Да чуть не забыл ADOConnection.ConnectionString:=
"Provider=MSDAOSP.1;Persist Security Info=False" - OLE DB Simple Provider
А после юзай свойство Filter/Filtered для отбора нужной записи. Или Locate.
phonebook.adtg по сравнению с Access базой в два раза компактней.
Одно плохо - READONLY


Lord Warlock   (2002-05-21 09:32:00) [2]


> HDD ©


Чтобы работало быстро, используй парадокс, таблицы можно создать в Desktop-e, или экспортировать из access.


wicked   (2002-05-21 09:23:00) [3]

2 HDD ©
кстати, а какого типа курсор ты пользуешь?... для вещей типа locate"а используй толькоклиентские курсоры -> CursorLocation=clUseClient...


Johnmen   (2002-05-21 09:19:00) [4]

Все тормоза из-за постепенной, по мере поиска, закачки записей таблицы на клиента.
1. сначала ADOTable1.Last потом поиск
2. или запрос на выборку типа SELECT...LIKE...
3. и использовать DBLookupCombo или аналоги.


HDD   (2002-05-21 01:01:00) [5]

Я отсортировал, но толку нету!


-=Sergeante=-   (2002-05-20 13:38:00) [6]

При индексации создается отсортированный список значений поля, т.е. отсорт-й по алфавиту, как в тел. стправочнике, или толковом словаре. Из-за этого резко и снижается время поиска записи. В простейшем случае поиск ведется методом деления пополам. На каждой итерации объем данных для поиска сокращается в 2 раза.


Slym   (2002-05-20 07:50:00) [7]

select * frow data
where Name like Edit.Text*;


HDD   (2002-05-20 06:47:00) [8]

Помогите пожалуйста


HDD   (2002-05-20 06:21:00) [9]

Может мне воспользоваться Dbase или Paradox! Как создать такие базы данных?


HDD   (2002-05-20 00:15:00) [10]

А можно по подробнее про индексацию!


wicked   (2002-05-19 17:47:00) [11]

еще как вариант поиска - на Edit.OnExit...


Desdechado   (2002-05-19 13:31:00) [12]

проиндексировать не хочешь?
и лучше делай поиск по кнопке, а не на Edit.OnChange


Наверх

Титульная страница Поиск, карта сайта Написать письмо